Files
wace_plm/WebContent/WEB-INF/classes/com/pms/mapper/dashboard.xml
chpark da06c4684c Initial commit: WACE PLM with database initialization features
- 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
2025-08-29 15:46:08 +09:00

6751 lines
344 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="dashboard">
<!-- //jmpark start -->
<select id="getDashboardProjectIssueStatusList" parameterType="map" resultType="map">
SELECT
(SELECT COUNT(1) FROM PLANNING_ISSUE AS O WHERE O.PROJECT_OBJID = T.OBJID AND O.status='release' ) AS ISSUE_CNT
,(SELECT COUNT(1) FROM PLANNING_ISSUE AS O WHERE O.PROJECT_OBJID = T.OBJID AND O.status='release' AND O.DESIGN_RESULT !='' AND O.DESIGN_DATE !='') AS COMP_CNT
,(SELECT COUNT(1) FROM PLANNING_ISSUE AS O WHERE O.PROJECT_OBJID = T.OBJID AND O.status='release' )
- (SELECT COUNT(1) FROM PLANNING_ISSUE AS O WHERE O.PROJECT_OBJID = T.OBJID AND O.status='release' AND O.DESIGN_RESULT !='' AND O.DESIGN_DATE !='') AS MISS_CNT
,CASE WHEN (SELECT COUNT(1) FROM PLANNING_ISSUE AS O WHERE O.PROJECT_OBJID = T.OBJID AND O.status='release' ) = 0
THEN 0
ELSE ROUND(((SELECT COUNT(1) FROM PLANNING_ISSUE AS O WHERE O.PROJECT_OBJID = T.OBJID AND O.status='release' AND O.DESIGN_RESULT !='' AND O.DESIGN_DATE !='')
/ (SELECT COUNT(1) FROM PLANNING_ISSUE AS O WHERE O.PROJECT_OBJID = T.OBJID AND O.status='release' )::FLOAT * 100)::numeric
)
END AS ISSUE_RATE
FROM PROJECT_MGMT AS T
WHERE T.OBJID = #{SEARCH_PROJECT_OBJID}
</select>
<select id="projectMgmtTimeLineGridList" parameterType="map" resultType="map">
SELECT
T.*
, ROUND((PRODUCE_RATETOTAL + DESIGN_RATETOTAL + PURCHASE_RATETOTAL)::NUMERIC /3, 1) TOTAL_RATE
, CASE WHEN SETUP_RATETOTAL=100 THEN 'Y' ELSE '' END SETUP_YN
, CASE WHEN SETUP_RATETOTAL >= 100 THEN '종료'
WHEN PLAN_CNT &lt; 1 THEN '계획미수립'
WHEN SETUP_RATETOTAL &lt; 100 AND (DESIGN_LATE_CNT > 0 OR PURCHASE_LATE_CNT > 0 OR PRODUCE_LATE_CNT > 0 OR SETUP_LATE_CNT > 0) THEN '지연'
ELSE '진행중' END STATUS_NM
<!--
,CASE WHEN TOTAL_BOM_PART_CNT = 0 THEN 0
ELSE
ROUND( TOTAL_PO_PART_CNT / TOTAL_BOM_PART_CNT::FLOAT * 100)
END AS PURCHASE_RATETOTAL
-->
FROM(
SELECT
T.OBJID
,C.CATEGORY_CD
,CODE_NAME(C.CATEGORY_CD) AS CATEGORY_NAME
,C.CUSTOMER_OBJID
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = C.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME
,C.PRODUCT
,CODE_NAME(C.PRODUCT) AS PRODUCT_NAME
,(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
,C.STATUS_CD
,CODE_NAME(C.STATUS_CD) AS STATUS_NAME
,C.DUE_DATE
,C.LOCATION
,C.SETUP
,C.FACILITY
,CODE_NAME(C.FACILITY) AS FACILITY_NAME
,C.FACILITY_QTY
,C.FACILITY_TYPE
,C.FACILITY_DEPTH
,C.PRODUCTION_NO
,C.BUS_CAL_CD
,CODE_NAME(C.BUS_CAL_CD) AS BUS_CAL_NAME
,C.CATEGORY1_CD
,CODE_NAME(C.CATEGORY1_CD) AS CATEGORY1_NAME
,C.CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = C.CHG_USER_ID ) AS CHG_USER_NAME
,C.PLAN_DATE
,C.COMPLETE_DATE
,C.RESULT_CD
,CODE_NAME(C.RESULT_CD) AS RESULT_NAME
,T.PROJECT_NO
,C.PM_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = (SELECT O.PM_USER_ID FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID)) AS PM_USER_NAME
,C.CONTRACT_PRICE
,C.CONTRACT_PRICE_CURRENCY
,C.CONTRACT_CURRENCY
,CODE_NAME(C.CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,C.REGDATE
,TO_CHAR(C.REGDATE,'YYYY-MM-DD') AS REG_DATE
,C.WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = T.OBJID AND DOC_TYPE='contractMgmt01' AND UPPER(STATUS) = 'ACTIVE') AS CU01_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = T.OBJID AND DOC_TYPE='contractMgmt02' AND UPPER(STATUS) = 'ACTIVE') AS CU02_CNT
,C.CONTRACT_NO
,C.CUSTOMER_EQUIP_NAME
,T.REQ_DEL_DATE
,C.CONTRACT_DEL_DATE
,C.CONTRACT_COMPANY
,CODE_NAME(C.CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,C.CONTRACT_DATE
,C.PO_NO
,C.MANUFACTURE_PLANT
,CODE_NAME(C.MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,C.CONTRACT_RESULT
,CODE_NAME(C.CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,CODE_NAME(C.AREA_CD) AS AREA_NAME
,C.PROJECT_NAME
,C.MECHANICAL_TYPE
,C.OVERHAUL_ORDER
<!--
,(SELECT MIN(DESIGN_PLAN_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.DESIGN_PLAN_START IS NOT NULL AND O.DESIGN_PLAN_START <![CDATA[ <> ]]> '') AS DESIGN_PLAN_START
,(SELECT MAX(DESIGN_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS DESIGN_PLAN_END
,(SELECT MIN(PURCHASE_PLAN_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PURCHASE_PLAN_START IS NOT NULL AND O.PURCHASE_PLAN_START <![CDATA[ <> ]]> '') AS PURCHASE_PLAN_START
,(SELECT MAX(PURCHASE_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PURCHASE_PLAN_END
,(SELECT MIN(PRODUCE_PLAN_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PRODUCE_PLAN_START IS NOT NULL AND O.PRODUCE_PLAN_START <![CDATA[ <> ]]> '') AS PRODUCE_PLAN_START
,(SELECT MAX(PRODUCE_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PRODUCE_PLAN_END
,(SELECT MIN(SETUP_PLAN_START) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.SETUP_PLAN_START IS NOT NULL AND O.SETUP_PLAN_START <![CDATA[ <> ]]> '') AS SETUP_PLAN_START
,(SELECT MAX(SETUP_PLAN_END) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SETUP_PLAN_END
,((SELECT SUM(COALESCE(DESIGN_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)+
(SELECT SUM(COALESCE(PURCHASE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)+
(SELECT SUM(COALESCE(PRODUCE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)+
(SELECT SUM(COALESCE(SELFINS_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)+
(SELECT COALESCE(MAX(FINALINS_RATE),'0')::INTEGER FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)+
(SELECT COALESCE(MAX(SHIP_RATE),'0')::INTEGER FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)+
(SELECT COALESCE(MAX(SETUP_RATE),'0')::INTEGER FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)/7) AS TOTAL_RATE
-->
,(SELECT MIN(DESIGN_ACT_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.DESIGN_ACT_START IS NOT NULL AND O.DESIGN_ACT_START <![CDATA[ <> ]]> '') AS DESIGN_ACT_START
,(SELECT MAX(DESIGN_ACT_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS DESIGN_ACT_END
,(SELECT MIN(PURCHASE_ACT_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PURCHASE_ACT_START IS NOT NULL AND O.PURCHASE_ACT_START <![CDATA[ <> ]]> '') AS PURCHASE_ACT_START
,(SELECT MAX(PURCHASE_ACT_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PURCHASE_ACT_END
,(SELECT MIN(PRODUCE_ACT_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PRODUCE_ACT_START IS NOT NULL AND O.PRODUCE_ACT_START <![CDATA[ <> ]]> '') AS PRODUCE_ACT_START
,(SELECT MAX(PRODUCE_ACT_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PRODUCE_ACT_END
,(SELECT MIN(SETUP_ACT_START) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.SETUP_ACT_START IS NOT NULL AND O.SETUP_ACT_START <![CDATA[ <> ]]> '') AS SETUP_ACT_START
,(SELECT MAX(SETUP_ACT_END) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SETUP_ACT_END
,(SELECT MIN(DESIGN_PLAN_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.DESIGN_PLAN_START IS NOT NULL AND O.DESIGN_PLAN_START <![CDATA[ <> ]]> '') AS DESIGN_PLAN_START
,(SELECT MAX(DESIGN_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS DESIGN_PLAN_END
,(SELECT MIN(PURCHASE_PLAN_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PURCHASE_PLAN_START IS NOT NULL AND O.PURCHASE_PLAN_START <![CDATA[ <> ]]> '') AS PURCHASE_PLAN_START
,(SELECT MAX(PURCHASE_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PURCHASE_PLAN_END
,(SELECT MIN(PRODUCE_PLAN_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PRODUCE_PLAN_START IS NOT NULL AND O.PRODUCE_PLAN_START <![CDATA[ <> ]]> '') AS PRODUCE_PLAN_START
,(SELECT MAX(PRODUCE_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PRODUCE_PLAN_END
,(SELECT MIN(SETUP_PLAN_START) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.SETUP_PLAN_START IS NOT NULL AND O.SETUP_PLAN_START <![CDATA[ <> ]]> '') AS SETUP_PLAN_START
,(SELECT MAX(SETUP_PLAN_END) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SETUP_PLAN_END
<!-- ,CASE WHEN (SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND((
((SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
- (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (DESIGN_ACT_END ='' OR DESIGN_ACT_END IS NULL)))::FLOAT
/(SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)) * 100)
END AS DESIGN_RATETOTAL -->
<!--
,CASE WHEN (SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND((
((SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
- (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PURCHASE_ACT_END ='' OR PURCHASE_ACT_END IS NULL)))::FLOAT
/(SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)) * 100)
END AS PURCHASE_RATETOTAL
-->
<!--
,(
SELECT
COUNT(DISTINCT CASE WHEN PM.PART_TYPE IN (SELECT CODE_ID FROM COMM_CODE WHERE PARENT_CODE_ID = '0000062') THEN BPQ.PART_NO ELSE NULL END)
FROM
PART_BOM_REPORT B
,BOM_PART_QTY BPQ
,PART_MNG PM
WHERE T.OBJID = B.CONTRACT_OBJID
AND B.OBJID = BPQ.BOM_REPORT_OBJID
AND BPQ.PART_NO = PM.OBJID::VARCHAR
AND BPQ.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
) AS TOTAL_BOM_PART_CNT /*BOM부품개수*/
,(
SELECT COUNT(DISTINCT PO.PART_NO)
FROM
BOM_PART_QTY Q,
PURCHASE_ORDER_PART PO
,PURCHASE_ORDER_MASTER POM
,PART_MNG P
WHERE 1=1
AND T.OBJID = POM.CONTRACT_MGMT_OBJID
AND POM.BOM_REPORT_OBJID = Q.BOM_REPORT_OBJID
AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = PO.PART_OBJID
AND Q.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
AND P.OBJID = PO.PART_OBJID
AND POM.STATUS = 'approvalComplete'
AND POM.OBJID = PO.PURCHASE_ORDER_MASTER_OBJID
AND P.PART_TYPE IS NOT NULL
AND P.PART_TYPE != ''
) TOTAL_PO_PART_CNT
,CASE WHEN (SELECT COUNT(1) AS TOTALCNT FROM ASSEMBLY_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND((
((SELECT COUNT(1) AS TOTALCNT FROM ASSEMBLY_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
- (SELECT COUNT(1) FROM ASSEMBLY_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (ASSEMBLY_DATE ='' OR ASSEMBLY_DATE IS NULL)))::FLOAT
/(SELECT COUNT(1) AS TOTALCNT FROM ASSEMBLY_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)) * 100)
END AS PRODUCE_RATETOTAL
,CASE WHEN (SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND((
((SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
- (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PRODUCE_ACT_END ='' OR PRODUCE_ACT_END IS NULL)))::FLOAT
/(SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)) * 100)
END AS PRODUCE_RATETOTAL
,CASE WHEN (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND(
(SELECT SUM(NVL(PRODUCE_RATE, '0')::FLOAT) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
/(SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) )
END AS PRODUCE_RATETOTAL
,COALESCE(R.ASSEMBLY_RATE, 0) AS PRODUCE_RATETOTAL
-->
,COALESCE(
(SELECT ROUND((SUM(AS_RATE) / (SELECT COUNT(1) FROM PMS_WBS_TASK W WHERE W.CONTRACT_OBJID = T.OBJID) ),1) AS ASSEMBLY_RATE
FROM
(SELECT
CASE WHEN (SELECT COUNT(*) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID = ST.OBJID AND PM.PART_TYPE IS NOT NULL AND PM.PART_TYPE != '') = 0 THEN 0
ELSE ROUND((((SELECT COUNT(1) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = ST.OBJID AND ASSEMBLY_USER_ID IS NOT NULL AND ASSEMBLY_USER_ID !='' AND ASSEMBLY_DATE IS NOT NULL AND ASSEMBLY_DATE!=''
)::NUMERIC / (SELECT COUNT(*) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID = ST.OBJID AND PM.PART_TYPE IS NOT NULL AND PM.PART_TYPE != '')) * 100), 1)
END AS AS_RATE
FROM PART_BOM_REPORT AS ST
WHERE ST.CONTRACT_OBJID = T.OBJID
) P
GROUP BY T.CONTRACT_OBJID), 0.0) AS PRODUCE_RATETOTAL
<!--
,CASE WHEN (SELECT COUNT(1) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '')) = '0' then '0'
ELSE ROUND((((SELECT COUNT(1) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (O.SETUP_ACT_END !='' AND O.SETUP_ACT_END IS NOT NULL) AND (PARENT_OBJID IS NOT NULL AND PARENT_OBJID != ''))::FLOAT
/ (SELECT COUNT(1) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PARENT_OBJID IS NOT NULL AND PARENT_OBJID != ''))) * 100)::integer, 1)
END SETUP_RATETOTAL
-->
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
<!--
AND TO_DATE(O.DESIGN_PLAN_START,'YYYY-MM-DD') <![CDATA[ > ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
-->
AND TO_DATE(O.DESIGN_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.DESIGN_ACT_END='' OR O.DESIGN_ACT_END IS NULL)
<!--
AND O.DESIGN_PLAN_START IS NOT NULL
AND O.DESIGN_PLAN_START!=''
-->
AND O.DESIGN_PLAN_END IS NOT NULL
AND O.DESIGN_PLAN_END!=''
) AS DESIGN_LATE_CNT
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
<!--
AND TO_DATE(O.PURCHASE_PLAN_START,'YYYY-MM-DD') <![CDATA[ > ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
-->
AND TO_DATE(O.PURCHASE_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.PURCHASE_ACT_END='' OR O.PURCHASE_ACT_END IS NULL)
<!--
AND O.PURCHASE_PLAN_START IS NOT NULL
AND O.PURCHASE_PLAN_START!=''
-->
AND O.PURCHASE_PLAN_END IS NOT NULL
AND O.PURCHASE_PLAN_END!=''
) AS PURCHASE_LATE_CNT
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
<!--
AND TO_DATE(O.PRODUCE_PLAN_START,'YYYY-MM-DD') <![CDATA[ > ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
-->
AND TO_DATE(O.PRODUCE_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.PRODUCE_ACT_END='' OR O.PRODUCE_ACT_END IS NULL)
<!--
AND O.PRODUCE_PLAN_START IS NOT NULL
AND O.PRODUCE_PLAN_START!=''
-->
AND O.PRODUCE_PLAN_END IS NOT NULL
AND O.PRODUCE_PLAN_END!=''
) AS PRODUCE_LATE_CNT
,(SELECT COUNT(1) FROM SETUP_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
<!--
AND TO_DATE(O.SETUP_PLAN_START,'YYYY-MM-DD') <![CDATA[ > ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
-->
AND TO_DATE(O.SETUP_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.SETUP_ACT_END='' OR O.SETUP_ACT_END IS NULL)
<!--
AND O.SETUP_PLAN_START IS NOT NULL
AND O.SETUP_PLAN_START!=''
-->
AND O.SETUP_PLAN_END IS NOT NULL
AND O.SETUP_PLAN_END!=''
) AS SETUP_LATE_CNT
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
AND(( O.DESIGN_PLAN_START IS NOT NULL
AND O.DESIGN_PLAN_START!=''
AND O.DESIGN_PLAN_END IS NOT NULL
AND O.DESIGN_PLAN_END!=''
)
OR ( O.PURCHASE_PLAN_START IS NOT NULL
AND O.PURCHASE_PLAN_START!=''
AND O.PURCHASE_PLAN_END IS NOT NULL
AND O.PURCHASE_PLAN_END!=''
)
OR ( O.PRODUCE_PLAN_START IS NOT NULL
AND O.PRODUCE_PLAN_START!=''
AND O.PRODUCE_PLAN_END IS NOT NULL
AND O.PRODUCE_PLAN_END!=''
)
)
)
+
(SELECT COUNT(1) FROM SETUP_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
AND ( O.SETUP_PLAN_START IS NOT NULL
AND O.SETUP_PLAN_START!=''
AND O.SETUP_PLAN_END IS NOT NULL
AND O.SETUP_PLAN_END!=''
)
) AS PLAN_CNT
<!--
,(SELECT SUM(COALESCE(DESIGN_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS DESIGN_RATE
,(SELECT SUM(COALESCE(PURCHASE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PURCHASE_RATE
,(SELECT SUM(COALESCE(PRODUCE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PRODUCE_RATE
,(SELECT SUM(COALESCE(SELFINS_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SELFINS_RATE
,(SELECT COALESCE(MAX(FINALINS_RATE),'0')::INTEGER FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS FINALINS_RATE
,(SELECT COALESCE(MAX(SHIP_RATE),'0')::INTEGER FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SHIP_RATE
,(SELECT COALESCE(MAX(SETUP_RATE),'0')::INTEGER FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SETUP_RATE
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS WBS_CNT
-->
,CASE WHEN (SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND((
((SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
- (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (DESIGN_ACT_END ='' OR DESIGN_ACT_END IS NULL)))::FLOAT
/(SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)) * 100)
END AS DESIGN_RATETOTAL
,CASE WHEN (SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND((
((SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
- (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PURCHASE_ACT_END ='' OR PURCHASE_ACT_END IS NULL)))::FLOAT
/(SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)) * 100)
END AS PURCHASE_RATETOTAL
,RM.RELEASE_DATE
,( SELECT COUNT(CASE WHEN DESIGN_ACT_START IS NOT NULL AND DESIGN_ACT_START!='' THEN 1 END) AS DESIGN_START_COUNT
FROM PMS_WBS_TASK W
WHERE W.CONTRACT_OBJID = T.OBJID
) DESIGN_START_COUNT
,( SELECT MIN(DESIGN_ACT_START) DESIGN_ACT_START_MIN
FROM PMS_WBS_TASK W
WHERE W.CONTRACT_OBJID = T.OBJID
AND COALESCE(NULLIF(DESIGN_ACT_START, ''), '') != ''
) DESIGN_ACT_START_MIN
,(SELECT CASE WHEN COUNT(CASE WHEN PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END) = 0 THEN 0
ELSE ROUND((
COUNT(CASE WHEN SETUP_ACT_END != '' AND SETUP_ACT_END IS NOT NULL AND PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END)::FLOAT
/
COUNT(CASE WHEN PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END)
* 100
)::numeric, 1)
END AS SETUP_RATETOTAL
FROM SETUP_WBS_TASK W
WHERE W.CONTRACT_OBJID = T.OBJID
) SETUP_RATETOTAL
FROM PROJECT_MGMT AS T
INNER JOIN CONTRACT_MGMT C
ON C.OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
RELEASE_MGMT RM
ON T.OBJID::VARCHAR = RM.PARENT_OBJID
<!-- 20240926 현재진행중 목록만 -->
LEFT OUTER JOIN (
SELECT
T.CONTRACT_OBJID,
CASE
WHEN COUNT(CASE WHEN PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END) = 0 THEN 0
ELSE ROUND((
COUNT(CASE WHEN SETUP_ACT_END != '' AND SETUP_ACT_END IS NOT NULL AND PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END)::FLOAT
/
COUNT(CASE WHEN PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END)
* 100
)::numeric, 1)
END AS SETUP_RATETOTAL
FROM
SETUP_WBS_TASK T
GROUP BY
T.CONTRACT_OBJID
) ST ON ST.CONTRACT_OBJID = T.OBJID
LEFT OUTER JOIN (
SELECT
CONTRACT_OBJID,
COUNT(CASE WHEN DESIGN_act_start IS NOT NULL AND DESIGN_act_start!='' THEN 1 END) AS DESIGN_START_COUNT
FROM
PMS_WBS_TASK
GROUP BY
CONTRACT_OBJID
) WT ON WT.CONTRACT_OBJID = T.OBJID
WHERE T.CONTRACT_RESULT = '0000964'
<!-- 진행중, 완료아닌거
AND SETUP_RATETOTAL != '100'
AND WT.DESIGN_START_COUNT > 0
-->
<!-- WHERE 1=1 -->
<!--
AND T.OBJID IN
(SELECT T.OBJID
FROM (SELECT
PM.PROJECT_NO
,TASK_NAME
,LEAST(DESIGN_PLAN_START,PURCHASE_PLAN_START,PRODUCE_PLAN_START,SELFINS_PLAN_START,FINALINS_PLAN_START,SHIP_PLAN_START,SETUP_PLAN_START) AS PLAN_START
,GREATEST(DESIGN_PLAN_END,PURCHASE_PLAN_END,PRODUCE_PLAN_END,SELFINS_PLAN_END,FINALINS_PLAN_END,SHIP_PLAN_END,SETUP_PLAN_END) AS PLAN_END
,PM.OBJID
FROM PMS_WBS_TASK AS PW,PROJECT_MGMT AS PM
WHERE PW.CONTRACT_OBJID = PM.OBJID
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
ORDER BY PM.REGDATE DESC,PW.UNIT_NO
) AS T
WHERE T.PLAN_START IS NOT NULL
AND T.PLAN_END IS NOT NULL
AND T.PLAN_START <![CDATA[ <= ]]> T.PLAN_END)
-->
<!-- <if test="Year2 !=null and Year2 != '' ">
AND TO_CHAR(C.REGDATE,'YYYY') = #{Year2}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(T.REQ_DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year} -->
<!--
AND TO_CHAR(TO_DATE(C.CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
AND TO_CHAR(TO_DATE(T.CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
AND EXISTS (SELECT 1 FROM RELEASE_MGMT SR WHERE C.OBJID = SR.PARENT_OBJID AND TO_CHAR(TO_DATE(SR.RELEASE_DATE,'YYYY-MM-DD'),'YYYY') = '2023')
AND EXISTS (SELECT 1 FROM CONTRACT_MGMT SC WHERE SC.OBJID = T.CONTRACT_OBJID AND TO_CHAR(TO_DATE(SC.CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = '2023')
-->
<!-- </if> -->
<if test="SEARCH_PROJECT_YEAR != null and SEARCH_PROJECT_YEAR !=''">
<!--
AND TO_CHAR(TO_DATE(C.CONTRACT_DATE, 'YYYY'), 'YYYY') = #{SEARCH_PROJECT_YEAR}
-->
AND #{SEARCH_PROJECT_YEAR} BETWEEN
(SELECT <!-- COALESCE( -->
LEAST(
MIN(TO_CHAR(TO_DATE(NULLIF(PURCHASE_PLAN_START, ''), 'YYYY'), 'YYYY')),
MIN(TO_CHAR(TO_DATE(NULLIF(PRODUCE_PLAN_START , ''), 'YYYY'), 'YYYY')),
MIN(TO_CHAR(TO_DATE(NULLIF(DESIGN_PLAN_START , ''), 'YYYY'), 'YYYY')),
(SELECT
MIN(TO_CHAR(TO_DATE(NULLIF(SETUP_PLAN_START , ''), 'YYYY'), 'YYYY'))
FROM SETUP_WBS_TASK AS S WHERE S.CONTRACT_OBJID=T.OBJID)
)<!-- , TO_CHAR(TO_DATE(C.CONTRACT_DATE, 'YYYY'), 'YYYY')) -->
FROM PMS_WBS_TASK O
WHERE O.CONTRACT_OBJID=T.OBJID)
AND (SELECT <!-- COALESCE( -->
GREATEST(
MAX(TO_CHAR(TO_DATE(NULLIF(PURCHASE_PLAN_END, ''), 'YYYY'), 'YYYY')),
MAX(TO_CHAR(TO_DATE(NULLIF(PRODUCE_PLAN_END , ''), 'YYYY'), 'YYYY')),
MAX(TO_CHAR(TO_DATE(NULLIF(DESIGN_PLAN_END , ''), 'YYYY'), 'YYYY')),
(SELECT
MAX(TO_CHAR(TO_DATE(NULLIF(SETUP_PLAN_END , ''), 'YYYY'), 'YYYY'))
FROM SETUP_WBS_TASK AS S WHERE S.CONTRACT_OBJID=T.OBJID)
)<!-- , TO_CHAR(TO_DATE(T.DUE_DATE, 'YYYY'), 'YYYY')) -->
FROM PMS_WBS_TASK O
WHERE O.CONTRACT_OBJID=T.OBJID)
</if>
<if test="project_no !=null and project_no != '' ">
AND T.OBJID = #{project_no}
</if>
<if test="project_nos != null and project_nos != ''">
AND T.OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="category_cd !=null and category_cd != '' ">
AND T.CATEGORY_CD = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND T.CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND T.PRODUCT = #{product}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(C.DUE_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(C.DUE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
<if test="pm_user_id !=null and pm_user_id !=''">
AND C.PM_USER_ID = #{pm_user_id}
</if>
<if test="location != null and !''.equals(location)">
AND UPPER(C.LOCATION) LIKE UPPER('%${location}%')
</if>
<if test="setup != null and !''.equals(setup)">
AND UPPER(C.SETUP) LIKE UPPER('%${setup}%')
</if>
) T
ORDER BY <!-- REQ_DEL_DATE, --> SUBSTRING(T.PROJECT_NO,POSITION('-' IN T.PROJECT_NO)+1) DESC
<!--
ORDER BY SUBSTRING(T.PROJECT_NO,POSITION('-' IN T.PROJECT_NO)+1) DESC
-->
</select>
<select id="projectMgmtTimeLineGridList_old" parameterType="map" resultType="map">
SELECT
T.*
,CASE WHEN TOTAL_BOM_PART_CNT = 0 THEN 0
ELSE
ROUND( TOTAL_PO_PART_CNT / TOTAL_BOM_PART_CNT::FLOAT * 100)
END AS PURCHASE_RATETOTAL
FROM(
SELECT
T.OBJID
,C.CATEGORY_CD
,CODE_NAME(C.CATEGORY_CD) AS CATEGORY_NAME
,C.CUSTOMER_OBJID
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = C.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME
,C.PRODUCT
,CODE_NAME(C.PRODUCT) AS PRODUCT_NAME
,(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
,C.STATUS_CD
,CODE_NAME(C.STATUS_CD) AS STATUS_NAME
,C.DUE_DATE
,C.LOCATION
,C.SETUP
,C.FACILITY
,CODE_NAME(C.FACILITY) AS FACILITY_NAME
,C.FACILITY_QTY
,C.FACILITY_TYPE
,C.FACILITY_DEPTH
,C.PRODUCTION_NO
,C.BUS_CAL_CD
,CODE_NAME(C.BUS_CAL_CD) AS BUS_CAL_NAME
,C.CATEGORY1_CD
,CODE_NAME(C.CATEGORY1_CD) AS CATEGORY1_NAME
,C.CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = C.CHG_USER_ID ) AS CHG_USER_NAME
,C.PLAN_DATE
,C.COMPLETE_DATE
,C.RESULT_CD
,CODE_NAME(C.RESULT_CD) AS RESULT_NAME
,T.PROJECT_NO
,C.PM_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = (SELECT O.PM_USER_ID FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID)) AS PM_USER_NAME
,C.CONTRACT_PRICE
,C.CONTRACT_PRICE_CURRENCY
,C.CONTRACT_CURRENCY
,CODE_NAME(C.CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,C.REGDATE
,TO_CHAR(C.REGDATE,'YYYY-MM-DD') AS REG_DATE
,C.WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = T.OBJID AND DOC_TYPE='contractMgmt01' AND UPPER(STATUS) = 'ACTIVE') AS CU01_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = T.OBJID AND DOC_TYPE='contractMgmt02' AND UPPER(STATUS) = 'ACTIVE') AS CU02_CNT
,C.CONTRACT_NO
,C.CUSTOMER_EQUIP_NAME
,T.REQ_DEL_DATE
,C.CONTRACT_DEL_DATE
,C.CONTRACT_COMPANY
,CODE_NAME(C.CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,C.CONTRACT_DATE
,C.PO_NO
,C.MANUFACTURE_PLANT
,CODE_NAME(C.MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,C.CONTRACT_RESULT
,CODE_NAME(C.CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,CODE_NAME(C.AREA_CD) AS AREA_NAME
,C.PROJECT_NAME
,C.MECHANICAL_TYPE
,C.OVERHAUL_ORDER
<!--
,(SELECT MIN(DESIGN_PLAN_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.DESIGN_PLAN_START IS NOT NULL AND O.DESIGN_PLAN_START <![CDATA[ <> ]]> '') AS DESIGN_PLAN_START
,(SELECT MAX(DESIGN_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS DESIGN_PLAN_END
,(SELECT MIN(PURCHASE_PLAN_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PURCHASE_PLAN_START IS NOT NULL AND O.PURCHASE_PLAN_START <![CDATA[ <> ]]> '') AS PURCHASE_PLAN_START
,(SELECT MAX(PURCHASE_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PURCHASE_PLAN_END
,(SELECT MIN(PRODUCE_PLAN_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PRODUCE_PLAN_START IS NOT NULL AND O.PRODUCE_PLAN_START <![CDATA[ <> ]]> '') AS PRODUCE_PLAN_START
,(SELECT MAX(PRODUCE_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PRODUCE_PLAN_END
,(SELECT MIN(SETUP_PLAN_START) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.SETUP_PLAN_START IS NOT NULL AND O.SETUP_PLAN_START <![CDATA[ <> ]]> '') AS SETUP_PLAN_START
,(SELECT MAX(SETUP_PLAN_END) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SETUP_PLAN_END
,((SELECT SUM(COALESCE(DESIGN_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)+
(SELECT SUM(COALESCE(PURCHASE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)+
(SELECT SUM(COALESCE(PRODUCE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)+
(SELECT SUM(COALESCE(SELFINS_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)+
(SELECT COALESCE(MAX(FINALINS_RATE),'0')::INTEGER FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)+
(SELECT COALESCE(MAX(SHIP_RATE),'0')::INTEGER FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)+
(SELECT COALESCE(MAX(SETUP_RATE),'0')::INTEGER FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)/7) AS TOTAL_RATE
-->
,(SELECT MIN(DESIGN_ACT_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.DESIGN_ACT_START IS NOT NULL AND O.DESIGN_ACT_START <![CDATA[ <> ]]> '') AS DESIGN_ACT_START
,(SELECT MAX(DESIGN_ACT_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS DESIGN_ACT_END
,(SELECT MIN(PURCHASE_ACT_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PURCHASE_ACT_START IS NOT NULL AND O.PURCHASE_ACT_START <![CDATA[ <> ]]> '') AS PURCHASE_ACT_START
,(SELECT MAX(PURCHASE_ACT_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PURCHASE_ACT_END
,(SELECT MIN(PRODUCE_ACT_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PRODUCE_ACT_START IS NOT NULL AND O.PRODUCE_ACT_START <![CDATA[ <> ]]> '') AS PRODUCE_ACT_START
,(SELECT MAX(PRODUCE_ACT_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PRODUCE_ACT_END
,(SELECT MIN(SETUP_ACT_START) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.SETUP_ACT_START IS NOT NULL AND O.SETUP_ACT_START <![CDATA[ <> ]]> '') AS SETUP_ACT_START
,(SELECT MAX(SETUP_ACT_END) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SETUP_ACT_END
,CASE WHEN (SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND((
((SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
- (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (DESIGN_ACT_END ='' OR DESIGN_ACT_END IS NULL)))::FLOAT
/(SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)) * 100)
END AS DESIGN_RATETOTAL
<!--
,CASE WHEN (SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND((
((SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
- (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PURCHASE_ACT_END ='' OR PURCHASE_ACT_END IS NULL)))::FLOAT
/(SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)) * 100)
END AS PURCHASE_RATETOTAL
-->
,(
SELECT
COUNT(DISTINCT CASE WHEN PM.PART_TYPE IN (SELECT CODE_ID FROM COMM_CODE WHERE PARENT_CODE_ID = '0000062') THEN BPQ.PART_NO ELSE NULL END)
FROM
PART_BOM_REPORT B
,BOM_PART_QTY BPQ
,PART_MNG PM
WHERE T.OBJID = B.CONTRACT_OBJID
AND B.OBJID = BPQ.BOM_REPORT_OBJID
AND BPQ.PART_NO = PM.OBJID::VARCHAR
AND BPQ.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
) AS TOTAL_BOM_PART_CNT /*BOM부품개수*/
,(
SELECT COUNT(DISTINCT PO.PART_NO)
FROM
BOM_PART_QTY Q,
PURCHASE_ORDER_PART PO
,PURCHASE_ORDER_MASTER POM
,PART_MNG P
WHERE 1=1
AND T.OBJID = POM.CONTRACT_MGMT_OBJID
AND POM.BOM_REPORT_OBJID = Q.BOM_REPORT_OBJID
AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = PO.PART_OBJID
AND Q.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
AND P.OBJID = PO.PART_OBJID
AND POM.STATUS = 'approvalComplete'
AND POM.OBJID = PO.PURCHASE_ORDER_MASTER_OBJID
AND P.PART_TYPE IS NOT NULL
AND P.PART_TYPE != ''
) TOTAL_PO_PART_CNT
<!--
,CASE WHEN (SELECT COUNT(1) AS TOTALCNT FROM ASSEMBLY_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND((
((SELECT COUNT(1) AS TOTALCNT FROM ASSEMBLY_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
- (SELECT COUNT(1) FROM ASSEMBLY_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (ASSEMBLY_DATE ='' OR ASSEMBLY_DATE IS NULL)))::FLOAT
/(SELECT COUNT(1) AS TOTALCNT FROM ASSEMBLY_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)) * 100)
END AS PRODUCE_RATETOTAL
,CASE WHEN (SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND((
((SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
- (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PRODUCE_ACT_END ='' OR PRODUCE_ACT_END IS NULL)))::FLOAT
/(SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)) * 100)
END AS PRODUCE_RATETOTAL
,CASE WHEN (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND(
(SELECT SUM(NVL(PRODUCE_RATE, '0')::FLOAT) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
/(SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) )
END AS PRODUCE_RATETOTAL
,COALESCE(R.ASSEMBLY_RATE, 0) AS PRODUCE_RATETOTAL
-->
,COALESCE(
(SELECT ROUND((SUM(AS_RATE) / (SELECT COUNT(1) FROM PMS_WBS_TASK W WHERE W.CONTRACT_OBJID = T.OBJID) ),1) AS ASSEMBLY_RATE
FROM
(SELECT
CASE WHEN (SELECT COUNT(*) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID = ST.OBJID AND PM.PART_TYPE IS NOT NULL AND PM.PART_TYPE != '') = 0 THEN 0
ELSE ROUND((((SELECT COUNT(1) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = ST.OBJID AND ASSEMBLY_USER_ID IS NOT NULL AND ASSEMBLY_USER_ID !='' AND ASSEMBLY_DATE IS NOT NULL AND ASSEMBLY_DATE!=''
)::NUMERIC / (SELECT COUNT(*) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID = ST.OBJID AND PM.PART_TYPE IS NOT NULL AND PM.PART_TYPE != '')) * 100), 1)
END AS AS_RATE
FROM PART_BOM_REPORT AS ST
WHERE ST.CONTRACT_OBJID = T.OBJID
) P
GROUP BY CONTRACT_OBJID), 0.0) AS PRODUCE_RATETOTAL
,CASE WHEN (SELECT COUNT(1) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '')) = '0' then '0'
ELSE ROUND((((SELECT COUNT(1) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (O.SETUP_ACT_END !='' AND O.SETUP_ACT_END IS NOT NULL) AND (PARENT_OBJID IS NOT NULL AND PARENT_OBJID != ''))::FLOAT
/ (SELECT COUNT(1) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PARENT_OBJID IS NOT NULL AND PARENT_OBJID != ''))) * 100)::integer, 1)
END SETUP_RATETOTAL
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
<!--
AND TO_DATE(O.DESIGN_PLAN_START,'YYYY-MM-DD') <![CDATA[ > ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
-->
AND TO_DATE(O.DESIGN_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.DESIGN_ACT_END='' OR O.DESIGN_ACT_END IS NULL)
AND O.DESIGN_PLAN_START IS NOT NULL
AND O.DESIGN_PLAN_START!=''
AND O.DESIGN_PLAN_END IS NOT NULL
AND O.DESIGN_PLAN_END!=''
) AS DESIGN_LATE_CNT
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
<!--
AND TO_DATE(O.PURCHASE_PLAN_START,'YYYY-MM-DD') <![CDATA[ > ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
-->
AND TO_DATE(O.PURCHASE_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.PURCHASE_ACT_END='' OR O.PURCHASE_ACT_END IS NULL)
AND O.PURCHASE_PLAN_START IS NOT NULL
AND O.PURCHASE_PLAN_START!=''
AND O.PURCHASE_PLAN_END IS NOT NULL
AND O.PURCHASE_PLAN_END!=''
) AS PURCHASE_LATE_CNT
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
<!--
AND TO_DATE(O.PRODUCE_PLAN_START,'YYYY-MM-DD') <![CDATA[ > ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
-->
AND TO_DATE(O.PRODUCE_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.PRODUCE_ACT_END='' OR O.PRODUCE_ACT_END IS NULL)
AND O.PRODUCE_PLAN_START IS NOT NULL
AND O.PRODUCE_PLAN_START!=''
AND O.PRODUCE_PLAN_END IS NOT NULL
AND O.PRODUCE_PLAN_END!=''
) AS PRODUCE_LATE_CNT
,(SELECT COUNT(1) FROM SETUP_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
<!--
AND TO_DATE(O.SETUP_PLAN_START,'YYYY-MM-DD') <![CDATA[ > ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
-->
AND TO_DATE(O.SETUP_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.SETUP_ACT_END='' OR O.SETUP_ACT_END IS NULL)
AND O.SETUP_PLAN_START IS NOT NULL
AND O.SETUP_PLAN_START!=''
AND O.SETUP_PLAN_END IS NOT NULL
AND O.SETUP_PLAN_END!=''
) AS SETUP_LATE_CNT
<!--
,(SELECT SUM(COALESCE(DESIGN_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS DESIGN_RATE
,(SELECT SUM(COALESCE(PURCHASE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PURCHASE_RATE
,(SELECT SUM(COALESCE(PRODUCE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PRODUCE_RATE
,(SELECT SUM(COALESCE(SELFINS_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SELFINS_RATE
,(SELECT COALESCE(MAX(FINALINS_RATE),'0')::INTEGER FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS FINALINS_RATE
,(SELECT COALESCE(MAX(SHIP_RATE),'0')::INTEGER FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SHIP_RATE
,(SELECT COALESCE(MAX(SETUP_RATE),'0')::INTEGER FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SETUP_RATE
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS WBS_CNT
-->
FROM PROJECT_MGMT AS T
INNER JOIN CONTRACT_MGMT C
ON C.OBJID = T.CONTRACT_OBJID
WHERE 1=1
<!--
AND T.OBJID IN
(SELECT T.OBJID
FROM (SELECT
PM.PROJECT_NO
,TASK_NAME
,LEAST(DESIGN_PLAN_START,PURCHASE_PLAN_START,PRODUCE_PLAN_START,SELFINS_PLAN_START,FINALINS_PLAN_START,SHIP_PLAN_START,SETUP_PLAN_START) AS PLAN_START
,GREATEST(DESIGN_PLAN_END,PURCHASE_PLAN_END,PRODUCE_PLAN_END,SELFINS_PLAN_END,FINALINS_PLAN_END,SHIP_PLAN_END,SETUP_PLAN_END) AS PLAN_END
,PM.OBJID
FROM PMS_WBS_TASK AS PW,PROJECT_MGMT AS PM
WHERE PW.CONTRACT_OBJID = PM.OBJID
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
ORDER BY PM.REGDATE DESC,PW.UNIT_NO
) AS T
WHERE T.PLAN_START IS NOT NULL
AND T.PLAN_END IS NOT NULL
AND T.PLAN_START <![CDATA[ <= ]]> T.PLAN_END)
-->
<if test="Year2 !=null and Year2 != '' ">
AND TO_CHAR(C.REGDATE,'YYYY') = #{Year2}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(T.REQ_DEL_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
<!--
AND TO_CHAR(TO_DATE(C.CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
AND TO_CHAR(TO_DATE(T.CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
AND EXISTS (SELECT 1 FROM RELEASE_MGMT SR WHERE C.OBJID = SR.PARENT_OBJID AND TO_CHAR(TO_DATE(SR.RELEASE_DATE,'YYYY-MM-DD'),'YYYY') = '2023')
AND EXISTS (SELECT 1 FROM CONTRACT_MGMT SC WHERE SC.OBJID = T.CONTRACT_OBJID AND TO_CHAR(TO_DATE(SC.CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = '2023')
-->
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND T.OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND T.OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="category_cd !=null and category_cd != '' ">
AND T.CATEGORY_CD = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND T.CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND T.PRODUCT = #{product}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(C.DUE_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(C.DUE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
<if test="pm_user_id !=null and pm_user_id !=''">
AND C.PM_USER_ID = #{pm_user_id}
</if>
<if test="location != null and !''.equals(location)">
AND UPPER(C.LOCATION) LIKE UPPER('%${location}%')
</if>
<if test="setup != null and !''.equals(setup)">
AND UPPER(C.SETUP) LIKE UPPER('%${setup}%')
</if>
) T
ORDER BY REQ_DEL_DATE, SUBSTRING(T.PROJECT_NO,POSITION('-' IN T.PROJECT_NO)+1) DESC
<!--
ORDER BY SUBSTRING(T.PROJECT_NO,POSITION('-' IN T.PROJECT_NO)+1) DESC
-->
</select>
<select id="projectMgmtTimeLineGridList_new" parameterType="map" resultType="map">
WITH base_data AS (SELECT
T.OBJID
,T.PROJECT_NO
,T.REQ_DEL_DATE
,T.CONTRACT_DEL_DATE
,RM.RELEASE_DATE
,(SELECT MIN(DESIGN_ACT_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.DESIGN_ACT_START IS NOT NULL AND O.DESIGN_ACT_START != '') AS DESIGN_ACT_START
,(SELECT MAX(DESIGN_ACT_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS DESIGN_ACT_END
,(SELECT MAX(DESIGN_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS DESIGN_PLAN_END
,(SELECT MIN(PURCHASE_ACT_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PURCHASE_ACT_START IS NOT NULL AND O.PURCHASE_ACT_START != '') AS PURCHASE_ACT_START
,(SELECT MAX(PURCHASE_ACT_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PURCHASE_ACT_END
,(SELECT MAX(PURCHASE_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PURCHASE_PLAN_END
,(SELECT MIN(PRODUCE_ACT_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PRODUCE_ACT_START IS NOT NULL AND O.PRODUCE_ACT_START != '') AS PRODUCE_ACT_START
,(SELECT MAX(PRODUCE_ACT_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PRODUCE_ACT_END
,(SELECT MAX(PRODUCE_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS PRODUCE_PLAN_END
,(SELECT MIN(SETUP_ACT_START) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.SETUP_ACT_START IS NOT NULL AND O.SETUP_ACT_START != '') AS SETUP_ACT_START
,(SELECT MAX(SETUP_ACT_END) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SETUP_ACT_END
,(SELECT MAX(SETUP_PLAN_END) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS SETUP_PLAN_END
,CASE WHEN (SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND((
((SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
- (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (DESIGN_ACT_END ='' OR DESIGN_ACT_END IS NULL)))::FLOAT
/(SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)) * 100)
END AS DESIGN_RATETOTAL
,CASE WHEN (SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) = 0 THEN 0
ELSE
ROUND((
((SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
- (SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PURCHASE_ACT_END ='' OR PURCHASE_ACT_END IS NULL)))::FLOAT
/(SELECT COUNT(1) AS TOTALCNT FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)) * 100)
END AS PURCHASE_RATETOTAL
,COALESCE(
(SELECT ROUND((SUM(AS_RATE) / (SELECT COUNT(1) FROM PMS_WBS_TASK W WHERE W.CONTRACT_OBJID = T.OBJID) ),1) AS ASSEMBLY_RATE
FROM
(SELECT
CASE WHEN (SELECT COUNT(*) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID = ST.OBJID AND PM.PART_TYPE IS NOT NULL AND PM.PART_TYPE != '') = 0 THEN 0
ELSE ROUND((((SELECT COUNT(1) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = ST.OBJID AND ASSEMBLY_USER_ID IS NOT NULL AND ASSEMBLY_USER_ID !='' AND ASSEMBLY_DATE IS NOT NULL AND ASSEMBLY_DATE!=''
)::NUMERIC / (SELECT COUNT(*) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID = ST.OBJID AND PM.PART_TYPE IS NOT NULL AND PM.PART_TYPE != '')) * 100), 1)
END AS AS_RATE
FROM PART_BOM_REPORT AS ST
WHERE ST.CONTRACT_OBJID = T.OBJID
) P
GROUP BY CONTRACT_OBJID), 0.0) AS PRODUCE_RATETOTAL
,CASE WHEN (SELECT COUNT(1) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '')) = '0' then '0'
ELSE ROUND((((SELECT COUNT(1) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (O.SETUP_ACT_END !='' AND O.SETUP_ACT_END IS NOT NULL) AND (PARENT_OBJID IS NOT NULL AND PARENT_OBJID != ''))::FLOAT
/ (SELECT COUNT(1) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PARENT_OBJID IS NOT NULL AND PARENT_OBJID != ''))) * 100)::integer, 1)
END SETUP_RATETOTAL
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
AND TO_DATE(O.DESIGN_PLAN_END,'YYYY-MM-DD') &lt; TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.DESIGN_ACT_END='' OR O.DESIGN_ACT_END IS NULL)
AND O.DESIGN_PLAN_START IS NOT NULL
AND O.DESIGN_PLAN_START!=''
AND O.DESIGN_PLAN_END IS NOT NULL
AND O.DESIGN_PLAN_END!=''
) AS DESIGN_LATE_CNT
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
AND TO_DATE(O.PURCHASE_PLAN_END,'YYYY-MM-DD') &lt; TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.PURCHASE_ACT_END='' OR O.PURCHASE_ACT_END IS NULL)
AND O.PURCHASE_PLAN_START IS NOT NULL
AND O.PURCHASE_PLAN_START!=''
AND O.PURCHASE_PLAN_END IS NOT NULL
AND O.PURCHASE_PLAN_END!=''
) AS PURCHASE_LATE_CNT
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
AND TO_DATE(O.PRODUCE_PLAN_END,'YYYY-MM-DD') &lt; TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.PRODUCE_ACT_END='' OR O.PRODUCE_ACT_END IS NULL)
AND O.PRODUCE_PLAN_START IS NOT NULL
AND O.PRODUCE_PLAN_START!=''
AND O.PRODUCE_PLAN_END IS NOT NULL
AND O.PRODUCE_PLAN_END!=''
) AS PRODUCE_LATE_CNT
,(SELECT COUNT(1) FROM SETUP_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=T.OBJID
AND TO_DATE(O.SETUP_PLAN_END,'YYYY-MM-DD') &lt; TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.SETUP_ACT_END='' OR O.SETUP_ACT_END IS NULL)
AND O.SETUP_PLAN_START IS NOT NULL
AND O.SETUP_PLAN_START!=''
AND O.SETUP_PLAN_END IS NOT NULL
AND O.SETUP_PLAN_END!=''
) AS SETUP_LATE_CNT
,CASE WHEN TO_DATE(t.REQ_DEL_DATE,'YYYY-MM-DD') &lt; TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD') THEN 1
ELSE 0
END AS RELEASE_LATE_CNT
FROM PROJECT_MGMT AS T
LEFT OUTER JOIN
RELEASE_MGMT RM
ON T.OBJID::VARCHAR = RM.PARENT_OBJID
WHERE 1=1
<!-- AND T.OBJID = '-829564123') -->
AND T.OBJID = #{project_no})
SELECT
'설계' AS TASK_NAME,
DESIGN_ACT_START AS ACT_START,
DESIGN_ACT_END AS ACT_END,
DESIGN_PLAN_END AS PLAN_END,
DESIGN_RATETOTAL AS RATE_TOTAL,
DESIGN_LATE_CNT AS LATE_CNT
FROM base_data
UNION ALL
SELECT
'구매' AS TASK_NAME,
PURCHASE_ACT_START AS ACT_START,
PURCHASE_ACT_END AS ACT_END,
PURCHASE_PLAN_END AS PLAN_END,
PURCHASE_RATETOTAL AS RATE_TOTAL,
PURCHASE_LATE_CNT AS LATE_CNT
FROM base_data
UNION ALL
SELECT
'조립' AS TASK_NAME,
PRODUCE_ACT_START AS ACT_START,
PRODUCE_ACT_END AS ACT_END,
PRODUCE_PLAN_END AS PLAN_END,
PRODUCE_RATETOTAL AS RATE_TOTAL,
PRODUCE_LATE_CNT AS LATE_CNT
FROM base_data
UNION ALL
SELECT
'출고' AS TASK_NAME,
RELEASE_DATE AS ACT_START,
RELEASE_DATE AS ACT_END,
REQ_DEL_DATE AS PLAN_END,
CASE WHEN RELEASE_DATE IS NULL OR RELEASE_DATE = '' THEN 0
ELSE '100' END RATE_TOTAL,
RELEASE_LATE_CNT AS LATE_CNT
<!-- REQ_DEL_DATE AS ACT_START,
REQ_DEL_DATE AS ACT_END,
CONTRACT_DEL_DATE AS PLAN_END,
0 AS RATE_TOTAL,
0 AS LATE_CNT -->
FROM base_data
UNION ALL
SELECT
'셋업' AS TASK_NAME,
SETUP_ACT_START AS ACT_START,
SETUP_ACT_END AS ACT_END,
SETUP_PLAN_END AS PLAN_END,
SETUP_RATETOTAL AS RATE_TOTAL,
SETUP_LATE_CNT AS LATE_CNT
FROM base_data
</select>
<!-- //main project status -->
<select id="getMainProjectStatusList" parameterType="map" resultType="map">
SELECT ROW_NUMBER() OVER(ORDER BY SOP_DATE DESC NULLS LAST) AS RNUM, PROJECT.*
, CASE WHEN TASK_COMPLETE_CNT = 0 THEN 0 ELSE ROUND((TASK_COMPLETE_CNT / TASK_ALL_CNT)*100, 1) END AS TASK_RATIO
, CASE WHEN PROBLEM_COMPLETE_CNT = 0 THEN 0 ELSE ROUND((PROBLEM_COMPLETE_CNT / PROBLEM_ALL_CNT)*100, 1) END AS PROBLEM_RATIO
, CASE WHEN EO_APPLY_COMPLETE_CNT = 0 THEN 0 ELSE ROUND((EO_APPLY_COMPLETE_CNT / EO_APPLY_ALL_CNT)*100, 1) END AS EO_APPLY_RATIO
FROM (
SELECT A.OBJID
, A.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = A.OEM_OBJID) AS OEM_NAME
, A.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS MODEL_CODE
, A.YEARLY_AVG_PRODUCTION_CNT AS YEARLY_AVG_PRODUCTION_CNT_ORG
, A.TOTAL_PRODUCTION_CNT AS TOTAL_PRODUCTION_CNT_ORG
, TRIM(TO_CHAR(NVL(A.YEARLY_AVG_PRODUCTION_CNT, 0), '999,999,999,990')) AS YEARLY_AVG_PRODUCTION_CNT
, TRIM(TO_CHAR(NVL(A.TOTAL_PRODUCTION_CNT, 0), '999,999,999,990')) AS TOTAL_PRODUCTION_CNT
, A.OEM_FACTORY
, (SELECT FACTORY_NAME FROM OEM_FACTORY_MNG WHERE OBJID = A.OEM_FACTORY) AS OEM_FACTORY_NAME
, (SELECT TO_CHAR(CAR_MILE.MILESTONE_DATE, 'YYYY-MM-DD') AS MILESTONE_DATE FROM OEM_MILESTONE_MNG OEM_MILE, CAR_MILESTONE_MNG CAR_MILE WHERE OEM_MILE.OBJID = CAR_MILE.MILESTONE_OBJID AND UPPER(OEM_MILE.MILESTONE_NAME) = 'SOP' AND CAR_MILE.CAR_OBJID = A.CAR_OBJID AND OEM_MILE.OEM_OBJID = A.OEM_OBJID) AS SOP_DATE
<!-- , (SELECT TO_CHAR(B.MILESTONE_DATE, 'YYYY-MM-DD') AS MILESTONE_DATE FROM OEM_MILESTONE_MNG A, CAR_MILESTONE_MNG B WHERE A.OBJID = B.MILESTONE_OBJID AND UPPER(A.MILESTONE_NAME) = 'SOP' AND B.CAR_OBJID = A.CAR_OBJID) AS SOP_DATE -->
, (SELECT COUNT(*) FROM PMS_REL_PJT_PROD WHERE TARGET_OBJID = A.OBJID) AS PROD_CNT
, (SELECT MEMBER_USER_ID FROM CAR_DISTRIBUTE_MEMBER WHERE CAR_OBJID = A.CAR_OBJID AND IS_TFT_LEADER = 0) AS TFT_LEADER_USER_ID
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = (SELECT MEMBER_USER_ID FROM CAR_DISTRIBUTE_MEMBER WHERE CAR_OBJID = A.CAR_OBJID AND IS_TFT_LEADER = 0)) AS TFT_LEADER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = (SELECT MEMBER_USER_ID FROM CAR_DISTRIBUTE_MEMBER WHERE CAR_OBJID = A.CAR_OBJID AND IS_TFT_LEADER = 0)) AS TFT_LEADER_USER_NAME
, (
SELECT CASE WHEN LAST_DAY(GATE4_TO_DATE) <![CDATA[ <= ]]> SYSDATE THEN 'GATE4'
WHEN LAST_DAY(GATE4_TO_DATE) <![CDATA[ >= ]]> SYSDATE AND GATE4_FROM_DATE <![CDATA[ <= ]]> SYSDATE THEN 'GATE4'
WHEN LAST_DAY(GATE3_TO_DATE) <![CDATA[ >= ]]> SYSDATE AND GATE3_FROM_DATE <![CDATA[ <= ]]> SYSDATE THEN 'GATE3'
WHEN LAST_DAY(GATE2_TO_DATE) <![CDATA[ >= ]]> SYSDATE AND GATE2_FROM_DATE <![CDATA[ <= ]]> SYSDATE THEN 'GATE2'
WHEN LAST_DAY(GATE1_TO_DATE) <![CDATA[ >= ]]> SYSDATE AND GATE1_FROM_DATE <![CDATA[ <= ]]> SYSDATE THEN 'GATE1'
WHEN GATE1_FROM_DATE <![CDATA[ >= ]]> SYSDATE THEN 'GATE1'
ELSE ''
END AS CURRENT_GATE
FROM PMS_PJT_REL_GATE_SCHEDULE
WHERE TARGET_OBJID = A.OBJID) AS CURRENT_GATE
, (SELECT COUNT(*) FROM PMS_WBS_TASK WHERE IS_TEMPLATE_TASK = 1 AND TARGET_OBJID = A.OBJID AND TASK_TYPE = 'task') AS TASK_ALL_CNT
, (SELECT COUNT(*) FROM PMS_WBS_TASK WHERE IS_TEMPLATE_TASK = 1 AND TARGET_OBJID = A.OBJID AND TASK_TYPE = 'task' AND UPPER(STATUS) = 'COMPLETE') AS TASK_COMPLETE_CNT
, (SELECT COUNT(*) FROM PMS_WBS_TASK WHERE IS_TEMPLATE_TASK = 1 AND TARGET_OBJID = A.OBJID AND TASK_TYPE = 'task' AND UPPER(STATUS) = 'CREATE' AND SYSDATE <![CDATA[ < ]]> TASK_START_PLAN_DATE) AS TASK_PLAN_CNT
, (SELECT COUNT(*) FROM PMS_WBS_TASK WHERE IS_TEMPLATE_TASK = 1 AND TARGET_OBJID = A.OBJID AND TASK_TYPE = 'task' AND UPPER(STATUS) = 'CREATE' AND SYSDATE <![CDATA[ > ]]> TASK_START_PLAN_DATE AND SYSDATE <![CDATA[ < ]]> TASK_END_PLAN_DATE) AS TASK_ONGOING_CNT
, (SELECT COUNT(*) FROM PMS_WBS_TASK WHERE IS_TEMPLATE_TASK = 1 AND TARGET_OBJID = A.OBJID AND TASK_TYPE = 'task' AND UPPER(STATUS) = 'CREATE' AND SYSDATE <![CDATA[ > ]]> TASK_END_PLAN_DATE) AS TASK_DELAY_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_GROUP G, PMS_PROBLEM_INFO P WHERE G.OBJID = P.TARGET_OBJID AND G.CAR_OBJID = A.CAR_OBJID AND P.UNMANAGE_TYPE IS NULL) AS PROBLEM_ALL_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_GROUP G, PMS_PROBLEM_INFO P WHERE G.OBJID = P.TARGET_OBJID AND G.CAR_OBJID = A.CAR_OBJID AND UPPER(P.STATUS) = 'COMPLETE' AND P.UNMANAGE_TYPE IS NULL) AS PROBLEM_COMPLETE_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_GROUP G, PMS_PROBLEM_INFO P WHERE G.OBJID = P.TARGET_OBJID AND G.CAR_OBJID = A.CAR_OBJID AND UPPER(P.STATUS) = 'CREATE' AND P.UNMANAGE_TYPE IS NULL) AS PROBLEM_ONGOING_CNT
, (SELECT COUNT(*) FROM (SELECT P.* FROM EO_INFO E, PART_INFO P WHERE 1=1 AND E.OBJID = P.EO_OBJID AND UPPER(P.STATUS) = 'COMPLETE' AND UPPER(E.STATUS) = 'RELEASE' AND UPPER(P.DRAWING_TYPE) = 'DRAW') PART, PMS_EO_APPLY_INFO APPLY WHERE PART.OBJID = APPLY.TARGET_OBJID(+) AND PART.CAR_OBJID = A.CAR_OBJID) AS EO_APPLY_ALL_CNT
, (SELECT COUNT(*) FROM (SELECT P.* FROM EO_INFO E, PART_INFO P WHERE 1=1 AND E.OBJID = P.EO_OBJID AND UPPER(P.STATUS) = 'COMPLETE' AND UPPER(E.STATUS) = 'RELEASE' AND UPPER(P.DRAWING_TYPE) = 'DRAW') PART, PMS_EO_APPLY_INFO APPLY WHERE PART.OBJID = APPLY.TARGET_OBJID(+) AND PART.CAR_OBJID = A.CAR_OBJID AND APPLY.ILJI_APPLY_POINT_DATE IS NOT NULL) AS EO_APPLY_COMPLETE_CNT
, (SELECT COUNT(*) FROM (SELECT P.* FROM EO_INFO E, PART_INFO P WHERE 1=1 AND E.OBJID = P.EO_OBJID AND UPPER(P.STATUS) = 'COMPLETE' AND UPPER(E.STATUS) = 'RELEASE' AND UPPER(P.DRAWING_TYPE) = 'DRAW') PART, PMS_EO_APPLY_INFO APPLY WHERE PART.OBJID = APPLY.TARGET_OBJID(+) AND PART.CAR_OBJID = A.CAR_OBJID AND APPLY.ILJI_APPLY_POINT_DATE IS NULL) AS EO_APPLY_ONGOING_CNT
, (SELECT COUNT(*) FROM PMS_ISSUE_INFO WHERE CAR_OBJID = A.CAR_OBJID) AS ISSUE_ALL_CNT
, A.IS_DEL
, A.STATUS
FROM PMS_PJT_INFO A
) PROJECT
WHERE 1=1
AND UPPER(PROJECT.STATUS) = 'CONFIRM'
AND UPPER(PROJECT.IS_DEL) IS NULL
AND TO_DATE(PROJECT.SOP_DATE, 'YYYY-MM-DD') <![CDATA[ > ]]> TO_DATE(SYSDATE, 'YYYY-MM-DD')
</select>
<select id="getProjectScheduleFormPopUp" parameterType="map" resultType="map">
SELECT
OBJID,
PROJECT_NO ,
PROJECT_NAME ,
CONTRACT_DATE ,
REQ_DEL_DATE ,
CUSTOMER_OBJID ,
(SELECT SUPPLY_NAME FROM SUPPLY_MNG SM WHERE SM.OBJID::VARCHAR = PM.CUSTOMER_OBJID)
FROM
PROJECT_MGMT PM
LEFT OUTER JOIN (
SELECT
T.CONTRACT_OBJID,
CASE
WHEN COUNT(CASE WHEN PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END) = 0 THEN 0
ELSE ROUND((
COUNT(CASE WHEN SETUP_ACT_END != '' AND SETUP_ACT_END IS NOT NULL AND PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END)::FLOAT
/
COUNT(CASE WHEN PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END)
* 100
)::numeric, 1)
END AS SETUP_RATETOTAL
FROM
SETUP_WBS_TASK T
GROUP BY
T.CONTRACT_OBJID
) ST ON ST.CONTRACT_OBJID = PM.OBJID
LEFT OUTER JOIN (
SELECT
CONTRACT_OBJID,
COUNT(CASE WHEN DESIGN_ACT_START IS NOT NULL AND DESIGN_ACT_START!='' THEN 1 END) AS DESIGN_START_COUNT
FROM
PMS_WBS_TASK
GROUP BY
CONTRACT_OBJID
) WT ON WT.CONTRACT_OBJID = PM.OBJID
WHERE CONTRACT_RESULT = '0000964'
AND SETUP_RATETOTAL != '100'
AND WT.DESIGN_START_COUNT > 0
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
</select>
<!-- //차종별 task 진행현황 -->
<select id="getTaskStatus_byCarCode" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT AA.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = AA.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = AA.CAR_OBJID) AS CAR_CODE
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = AA.CAR_OBJID) AS OEM_OBJID
, COUNT(*) AS ALL_CNT
, COUNT(CASE WHEN UPPER(AA.STATUS) = 'COMPLETE' THEN 1 ELSE NULL END) AS COMPLETE_CNT
, COUNT(CASE WHEN UPPER(AA.STATUS) = 'CREATE' AND SYSDATE <![CDATA[ < ]]> AA.TASK_START_PLAN_DATE THEN 1 ELSE NULL END) AS PLAN_CNT
, COUNT(CASE WHEN UPPER(AA.STATUS) = 'CREATE' AND SYSDATE <![CDATA[ >= ]]> AA.TASK_START_PLAN_DATE AND SYSDATE <![CDATA[ <= ]]> AA.TASK_END_PLAN_DATE THEN 1 ELSE NULL END) AS ONGOING_CNT
, COUNT(CASE WHEN UPPER(AA.STATUS) = 'CREATE' AND SYSDATE <![CDATA[ > ]]> AA.TASK_END_PLAN_DATE THEN 1 ELSE NULL END) AS DELAY_CNT
FROM (
SELECT *
FROM (
SELECT A.CAR_OBJID
, B.TASK_START_PLAN_DATE
, B.TASK_END_PLAN_DATE
, B.STATUS
, (SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) AND CAR_OBJID = A.CAR_OBJID) AS SOP_DATE
FROM PMS_PJT_INFO A, PMS_WBS_TASK B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND B.IS_TEMPLATE_TASK = 1
AND UPPER(A.STATUS) = 'CONFIRM'
AND UPPER(B.TASK_TYPE) = 'TASK'
)
ORDER BY SOP_DATE DESC
) AA
WHERE 1=1
GROUP BY AA.CAR_OBJID
)
WHERE ROWNUM <![CDATA[ <= ]]> 5
<if test="carObjId != null and !''.equals(carObjId)">
AND CAR_OBJID = #{carObjId}
</if>
</select>
<!-- //문제점 현황 -->
<select id="getProblemStatusList" parameterType="map" resultType="map">
SELECT ROW_NUMBER() OVER(ORDER BY SOP_DATE DESC NULLS LAST) RNUM, AAA.*
FROM (
SELECT CAR_OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS OEM_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_CODE
, SOP_DATE
, COUNT(*) AS ALL_CNT
, COUNT(CASE WHEN UPPER(STATUS) = 'COMPLETE' THEN 1 ELSE NULL END) AS COMPLETE_CNT
, COUNT(CASE WHEN UPPER(STATUS) = 'CREATE' THEN 1 ELSE NULL END) AS ONGOING_CNT
FROM (
SELECT *
FROM (
SELECT A.CAR_OBJID
, B.STATUS
, (SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) AND CAR_OBJID = A.CAR_OBJID) AS SOP_DATE
FROM PMS_PROBLEM_GROUP A, PMS_PROBLEM_INFO B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND B.UNMANAGE_TYPE IS NULL
)
<!-- ORDER BY SOP_DATE DESC -->
) AA
WHERE 1=1
<!-- AND ROWNUM <![CDATA[ <= ]]> 5 -->
GROUP BY AA.CAR_OBJID, AA.SOP_DATE
) AAA
WHERE ROWNUM <![CDATA[ <= ]]> 5
</select>
<!-- //차종별 EO적용현황 -->
<select id="getEOApplyStatus_ByCarCode" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT A.CAR_OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, COUNT(*) AS ALL_CNT
, SOP_DATE
, COUNT(CASE WHEN APPLY_DATE IS NULL THEN 1 ELSE NULL END) AS ONGOING_CNT
, COUNT(CASE WHEN APPLY_DATE IS NOT NULL THEN 1 ELSE NULL END) AS COMPLETE_CNT
FROM (
SELECT *
FROM (
SELECT P.CAR_OBJID
, AP.ILJI_APPLY_POINT_DATE AS APPLY_DATE
, (SELECT CAR_MILE.MILESTONE_DATE FROM OEM_MILESTONE_MNG OEM_MILE, CAR_MILESTONE_MNG CAR_MILE WHERE OEM_MILE.OBJID = CAR_MILE.MILESTONE_OBJID AND UPPER(OEM_MILE.MILESTONE_NAME) = 'SOP' AND CAR_MILE.CAR_OBJID = E.CAR_OBJID AND OEM_MILE.OEM_OBJID = P.OEM_OBJID) AS SOP_DATE
FROM EO_INFO E, PART_INFO P, PMS_EO_APPLY_INFO AP
WHERE 1=1
AND UPPER(P.DRAWING_TYPE) = 'DRAW'
AND E.OBJID = P.EO_OBJID
AND P.OBJID = AP.TARGET_OBJID(+)
AND UPPER(E.STATUS) = 'RELEASE'
AND UPPER(P.STATUS) = 'COMPLETE'
)
) A
WHERE 1=1
GROUP BY A.CAR_OBJID, A.SOP_DATE
ORDER BY SOP_DATE DESC NULLS LAST
)
WHERE ROWNUM <![CDATA[ <= ]]> 5
</select>
<!--
구조검토 제안관리 관리 현황 최초 이동 시
구성된 정보의 차종 중 SOP가 가장 먼 차종으로 등록 된 정보를 가져온다.
-->
<select id="getStructureReviewReportStatus_baseInfo" parameterType="map" resultType="map">
SELECT
OEM_OBJID,
CAR_OBJID,
PRODUCT_GROUP_OBJID
FROM(
SELECT
INFO.*,
MILE.MILESTONE_DATE
FROM CAR_MILESTONE_MNG MILE,
(
SELECT
A.OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, A.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PRODUCT_GROUP_OBJID
, A.PROD_OBJID
FROM PMS_STRUCTURE_REVIEW_REPORT A
WHERE 1=1
AND UPPER(STATUS) = 'COMPLETE'
)INFO
WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND OEM_OBJID = INFO.OEM_OBJID AND ROWNUM = 1)
AND MILE.CAR_OBJID = INFO.CAR_OBJID
ORDER BY MILESTONE_DATE DESC NULLS LAST,INFO.CAR_CODE
) WHERE ROWNUM=1
</select>
<!-- //구조검토 제안관리 하단 Grid Data 조회 -->
<select id="getStructureReviewReportStatus_gridData" parameterType="map" resultType="map">
SELECT AAA.CAR_OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = AAA.CAR_OBJID) OEM_OBJID
, AAA.PROD_OBJID
, AAA.CAR_NAME
, AAA.CAR_CODE
, AAA.PROD_GROUP_NAME
, AAA.PROD_GROUP_OBJID
, AAA.PROD_NAME
, AAA.STEP1_ORG
, AAA.STEP1
, AAA.STEP2
, AAA.SOP_DATE
, COUNT(CASE WHEN AAA.TYPE2 = '성형성' AND UPPER(AAA.ACTION_RESULT) = 'REFLECT' THEN 1 ELSE NULL END) AS MOLD_REFLECT_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '성형성' AND UPPER(AAA.ACTION_RESULT) = 'REVIEW' THEN 1 ELSE NULL END) AS MOLD_REVIEW_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '성형성' AND UPPER(AAA.ACTION_RESULT) = 'REJECT' THEN 1 ELSE NULL END) AS MOLD_REJECT_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '성형성' THEN 1 ELSE NULL END) AS MOLD_ALL_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '조립성' AND UPPER(AAA.ACTION_RESULT) = 'REFLECT' THEN 1 ELSE NULL END) AS ASSY_REFLECT_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '조립성' AND UPPER(AAA.ACTION_RESULT) = 'REVIEW' THEN 1 ELSE NULL END) AS ASSY_REVIEW_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '조립성' AND UPPER(AAA.ACTION_RESULT) = 'REJECT' THEN 1 ELSE NULL END) AS ASSY_REJECT_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '조립성' THEN 1 ELSE NULL END) AS ASSY_ALL_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '생산성' AND UPPER(AAA.ACTION_RESULT) = 'REFLECT' THEN 1 ELSE NULL END) AS PRODUCTION_REFLECT_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '생산성' AND UPPER(AAA.ACTION_RESULT) = 'REVIEW' THEN 1 ELSE NULL END) AS PRODUCTION_REVIEW_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '생산성' AND UPPER(AAA.ACTION_RESULT) = 'REJECT' THEN 1 ELSE NULL END) AS PRODUCTION_REJECT_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '생산성' THEN 1 ELSE NULL END) AS PRODUCTION_ALL_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '작업성' AND UPPER(AAA.ACTION_RESULT) = 'REFLECT' THEN 1 ELSE NULL END) AS WORK_REFLECT_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '작업성' AND UPPER(AAA.ACTION_RESULT) = 'REVIEW' THEN 1 ELSE NULL END) AS WORK_REVIEW_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '작업성' AND UPPER(AAA.ACTION_RESULT) = 'REJECT' THEN 1 ELSE NULL END) AS WORK_REJECT_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '작업성' THEN 1 ELSE NULL END) AS WORK_ALL_CNT
, COUNT(CASE WHEN AAA.TYPE2 = 'Data오류' AND UPPER(AAA.ACTION_RESULT) = 'REFLECT' THEN 1 ELSE NULL END) AS DATA_ERROR_REFLECT_CNT
, COUNT(CASE WHEN AAA.TYPE2 = 'Data오류' AND UPPER(AAA.ACTION_RESULT) = 'REVIEW' THEN 1 ELSE NULL END) AS DATA_ERROR_REVIEW_CNT
, COUNT(CASE WHEN AAA.TYPE2 = 'Data오류' AND UPPER(AAA.ACTION_RESULT) = 'REJECT' THEN 1 ELSE NULL END) AS DATA_ERROR_REJECT_CNT
, COUNT(CASE WHEN AAA.TYPE2 = 'Data오류' THEN 1 ELSE NULL END) AS DATA_ERROR_ALL_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '원가절감' AND UPPER(AAA.ACTION_RESULT) = 'REFLECT' THEN 1 ELSE NULL END) AS COST_REDUCTION_REFLECT_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '원가절감' AND UPPER(AAA.ACTION_RESULT) = 'REVIEW' THEN 1 ELSE NULL END) AS COST_REDUCTION_REVIEW_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '원가절감' AND UPPER(AAA.ACTION_RESULT) = 'REJECT' THEN 1 ELSE NULL END) AS COST_REDUCTION_REJECT_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '원가절감' THEN 1 ELSE NULL END) AS COST_REDUCTION_ALL_CNT
, COUNT(*) AS ALL_CNT
FROM (
SELECT *
FROM (
SELECT A.OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, A.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, A.PROD_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID)) AS PROD_GROUP_NAME
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, CASE WHEN A.STEP1 = 'design' THEN '설계'
WHEN A.STEP1 = 'develop' THEN '개발'
WHEN A.STEP1 = 'production' THEN '양산'
ELSE A.STEP1 END AS STEP1
, A.STEP1 AS STEP1_ORG
, A.STEP2
, A.TYPE2
, A.ACTION_RESULT
, (SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) AND CAR_OBJID = A.CAR_OBJID) AS SOP_DATE
FROM PMS_STRUCTURE_REVIEW_REPORT A
WHERE 1=1
AND UPPER(STATUS) = 'COMPLETE'
) AA
WHERE 1=1
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND AA.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND AA.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroup != null and search_productGroup !=''">
AND AA.PROD_GROUP_OBJID = #{search_productGroup}
</if>
<if test="search_productType != null and search_productType !=''">
AND AA.PROD_OBJID = #{search_productType}
</if>
<if test="step1 != null and !''.equals(step1)">
AND AA.STEP1_ORG = #{step1}
</if>
<if test="step2 != null and !''.equals(step2)">
AND AA.STEP2 = #{step2}
</if>
ORDER BY SOP_DATE DESC NULLS LAST
) AAA
GROUP BY AAA.SOP_DATE,AAA.CAR_OBJID, AAA.CAR_NAME, AAA.CAR_CODE, AAA.PROD_OBJID, AAA.PROD_GROUP_OBJID, AAA.PROD_GROUP_NAME, AAA.PROD_NAME, AAA.STEP1_ORG, AAA.STEP1, AAA.STEP2
ORDER BY AAA.SOP_DATE DESC NULLS LAST,AAA.CAR_CODE, AAA.STEP1, AAA.STEP2, AAA.PROD_NAME
</select>
<!-- //구조검토 제안관리 상단 좌측 Chart Data 조회 -->
<select id="getStructureReviewReportStatus_chartData1" parameterType="map" resultType="map">
SELECT COUNT(CASE WHEN AAA.TYPE2 = '성형성' THEN 1 ELSE NULL END) AS MOLD_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '조립성' THEN 1 ELSE NULL END) AS ASSY_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '생산성' THEN 1 ELSE NULL END) AS PRODUCTION_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '작업성' THEN 1 ELSE NULL END) AS WORK_CNT
, COUNT(CASE WHEN AAA.TYPE2 = 'Data오류' THEN 1 ELSE NULL END) AS DATA_ERROR_CNT
, COUNT(CASE WHEN AAA.TYPE2 = '원가절감' THEN 1 ELSE NULL END) AS COST_REDUCTION_CNT
FROM (
SELECT *
FROM (
SELECT A.CAR_OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, A.PROD_OBJID
, A.STEP1
, A.STEP2
, A.TYPE1
, A.TYPE2
, (SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) AND CAR_OBJID = A.CAR_OBJID) AS SOP_DATE
FROM PMS_STRUCTURE_REVIEW_REPORT A
WHERE 1=1
AND UPPER(STATUS) = 'COMPLETE'
) AA
WHERE 1=1
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND AA.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND AA.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroup != null and search_productGroup !=''">
AND AA.PROD_GROUP_OBJID = #{search_productGroup}
</if>
<if test="search_productType != null and search_productType !=''">
AND AA.PROD_OBJID = #{search_productType}
</if>
<if test="step1 != null and !''.equals(step1)">
AND AA.STEP1 = #{step1}
</if>
<if test="step2 != null and !''.equals(step2)">
AND AA.STEP2 = #{step2}
</if>
ORDER BY SOP_DATE DESC NULLS LAST
) AAA
WHERE 1=1
</select>
<!-- //구조검토 제안관리 상단 우측 Chart Data 조회 -->
<select id="getStructureReviewReportStatus_chartData2" parameterType="map" resultType="map">
SELECT COUNT(CASE WHEN UPPER(AAA.ACTION_RESULT) = 'REFLECT' THEN 1 ELSE NULL END) AS REFLECT_CNT
, COUNT(CASE WHEN UPPER(AAA.ACTION_RESULT) = 'REVIEW' THEN 1 ELSE NULL END) AS REVIEW_CNT
, COUNT(CASE WHEN UPPER(AAA.ACTION_RESULT) = 'REJECT' THEN 1 ELSE NULL END) AS REJECT_CNT
FROM (
SELECT *
FROM (
SELECT A.CAR_OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, A.PROD_OBJID
, A.STEP1
, A.STEP2
, A.ACTION_RESULT
, (SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) AND CAR_OBJID = A.CAR_OBJID) AS SOP_DATE
FROM PMS_STRUCTURE_REVIEW_REPORT A
WHERE 1=1
AND UPPER(STATUS) = 'COMPLETE'
) AA
WHERE 1=1
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND AA.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND AA.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroup != null and search_productGroup !=''">
AND AA.PROD_GROUP_OBJID = #{search_productGroup}
</if>
<if test="search_productType != null and search_productType !=''">
AND AA.PROD_OBJID = #{search_productType}
</if>
<if test="step1 != null and !''.equals(step1)">
AND AA.STEP1 = #{step1}
</if>
<if test="step2 != null and !''.equals(step2)">
AND AA.STEP2 = #{step2}
</if>
ORDER BY SOP_DATE DESC NULLS LAST
) AAA
WHERE 1=1
</select>
<!-- //입찰활동 상세현황 좌측 현황 -->
<select id="getProjectConceptDetailStatus_chart1" parameterType="map" resultType="map">
SELECT AA.ESTIMATE_SUBMIT_YEAR
, COUNT(*) AS ALL_CNT
, COUNT(CASE WHEN UPPER(AA.BIDDING_RESULT) = 'Y' AND UPPER(FOREIGN_TYPE) = 'D' THEN 1 ELSE NULL END) AS D_OK_CNT
, COUNT(CASE WHEN UPPER(AA.BIDDING_RESULT) = 'Y' AND UPPER(FOREIGN_TYPE) = 'F' THEN 1 ELSE NULL END) AS F_OK_CNT
, COUNT(CASE WHEN UPPER(AA.BIDDING_RESULT) IS NULL THEN 1 ELSE NULL END) AS ONGOING_CNT
, COUNT(CASE WHEN UPPER(AA.BIDDING_RESULT) = 'N' THEN 1 ELSE NULL END) AS NG_CNT
FROM (
SELECT A.FOREIGN_TYPE
, B.BIDDING_RESULT
, TO_CHAR(B.ESTIMATE_SUBMIT_DATE, 'YYYY') AS ESTIMATE_SUBMIT_YEAR
FROM PMS_PJT_CONCEPT_INFO A, PMS_REL_PJT_CONCEPT_PROD B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND (UPPER(A.IS_DEL) IS NULL OR UPPER(A.IS_DEL) = 1)
AND (UPPER(B.IS_DEL) IS NULL OR UPPER(B.IS_DEL) = 1)
) AA
WHERE 1=1
GROUP BY AA.ESTIMATE_SUBMIT_YEAR
ORDER BY ESTIMATE_SUBMIT_YEAR DESC NULLS LAST
</select>
<!-- //입찰활동 상세현황 좌측 현황 -->
<select id="getProjectConceptDetailStatus_chart2" parameterType="map" resultType="map">
SELECT PROD_GROUP_NAME
, (SELECT OBJID FROM PRODUCT_GROUP_MNG WHERE PRODUCT_GROUP_NAME = PROD_GROUP_NAME) AS PROD_GROUP_OBJID
, COUNT(PROD_GROUP_NAME) AS OK_CNT
FROM (
SELECT B.PROD_OBJID
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = B.PROD_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = B.PROD_OBJID)) AS PROD_GROUP_NAME
, B.ESTIMATE_SUBMIT_DATE
FROM PMS_PJT_CONCEPT_INFO A, PMS_REL_PJT_CONCEPT_PROD B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND (UPPER(A.IS_DEL) IS NULL OR UPPER(A.IS_DEL) = 1)
AND (UPPER(B.IS_DEL) IS NULL OR UPPER(B.IS_DEL) = 1)
<if test="search_fromDate != null and !''.equals(search_fromDate)">
AND B.ESTIMATE_SUBMIT_DATE <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'YYYY-MM-DD')
</if>
<if test="search_toDate != null and !''.equals(search_toDate)">
AND B.ESTIMATE_SUBMIT_DATE <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'YYYY-MM-DD')
</if>
AND UPPER(B.BIDDING_RESULT) = 'Y'
)
WHERE 1=1
GROUP BY PROD_GROUP_NAME
</select>
<!-- //Gate 현황 > 차종별 Task 진행현황 chart1 -->
<select id="getGateProblemStatus_chart1" parameterType="map" resultType="map">
SELECT AA.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = AA.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = AA.CAR_OBJID) AS CAR_CODE
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = AA.CAR_OBJID) AS OEM_OBJID
, COUNT(*) AS ALL_CNT
, COUNT(CASE WHEN UPPER(AA.STATUS) = 'COMPLETE' THEN 1 ELSE NULL END) AS COMPLETE_CNT
, COUNT(CASE WHEN UPPER(AA.STATUS) = 'CREATE' AND SYSDATE <![CDATA[ < ]]> AA.TASK_START_PLAN_DATE THEN 1 ELSE NULL END) AS PLAN_CNT
, COUNT(CASE WHEN UPPER(AA.STATUS) = 'CREATE' AND SYSDATE <![CDATA[ >= ]]> AA.TASK_START_PLAN_DATE AND SYSDATE <![CDATA[ <= ]]> AA.TASK_END_PLAN_DATE THEN 1 ELSE NULL END) AS ONGOING_CNT
, COUNT(CASE WHEN UPPER(AA.STATUS) = 'CREATE' AND SYSDATE <![CDATA[ > ]]> AA.TASK_END_PLAN_DATE THEN 1 ELSE NULL END) AS DELAY_CNT
FROM (
SELECT A.CAR_OBJID
, B.STATUS
, B.TASK_START_PLAN_DATE
, B.TASK_END_PLAN_DATE
, (SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) AND CAR_OBJID = A.CAR_OBJID) AS SOP_DATE
FROM PMS_PJT_INFO A, PMS_WBS_TASK B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
AND B.IS_TEMPLATE_TASK = 1
AND UPPER(B.TASK_TYPE) = 'TASK'
<choose>
<when test="search_carObjId != null and !''.equals(search_carObjId)">
AND A.CAR_OBJID = #{search_carObjId}
</when>
<otherwise>
AND A.CAR_OBJID = (SELECT CAR_OBJID FROM (SELECT CAR_OBJID FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) ORDER BY MILESTONE_DATE DESC NULLS LAST) WHERE ROWNUM = 1)
</otherwise>
</choose>
) AA
WHERE 1=1
GROUP BY AA.CAR_OBJID
</select>
<!-- //Gate 현황 > 문제점 조치현황 chart2 -->
<select id="getGateProblemStatus_chart2" parameterType="map" resultType="map">
SELECT AAA.*
, CASE WHEN (ALL_CNT * COMPLETE_CNT = 0) THEN 0 ELSE ROUND(COMPLETE_CNT / ALL_CNT * 100, 1) END AS COMPLETE_RATIO
FROM (
SELECT AA.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = AA.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = AA.CAR_OBJID) AS CAR_CODE
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = AA.CAR_OBJID) AS OEM_OBJID
, to_char(SOP_DATE, 'yyyy-mm-dd') as SOP_DATE
, COUNT(*) AS ALL_CNT
, COUNT(CASE WHEN UPPER(AA.STATUS) = 'CREATE' THEN 1 ELSE NULL END) AS ONGOING_CNT
, COUNT(CASE WHEN UPPER(AA.STATUS) = 'COMPLETE' THEN 1 ELSE NULL END) AS COMPLETE_CNT
FROM (
SELECT A.CAR_OBJID
, B.STATUS
, (SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) AND CAR_OBJID = A.CAR_OBJID) AS SOP_DATE
FROM PMS_PROBLEM_GROUP A, PMS_PROBLEM_INFO B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND B.UNMANAGE_TYPE IS NULL
) AA
WHERE 1=1
GROUP BY CAR_OBJID, SOP_DATE
ORDER BY SOP_DATE DESC NULLS LAST
) AAA
WHERE 1=1
</select>
<!-- 원가(COST)차트 -->
<select id="getmainDash_chart1" parameterType="map" resultType="map">
<![CDATA[
SELECT
NVL(T1.SUM1,0) AS SUM1
,NVL(T2.SUM2,0) AS SUM2
,NVL(T3.SUM3,0) AS SUM3
,NVL(T4.SUM4,0) AS SUM4
FROM (SELECT SUM(ORDER_PRICE) AS SUM1 FROM ORDER_MGMT T
WHERE TO_CHAR(TO_DATE(SUBSTR(PROJECT_NO,0,2),'YY'),'YYYY') = #{Year}
AND T.PROJECT_DIVISION='PND00100') T1,
(SELECT SUM(ORDER_PRICE) AS SUM2 FROM ORDER_MGMT T
WHERE TO_CHAR(TO_DATE(SUBSTR(PROJECT_NO,0,2),'YY'),'YYYY') = #{Year}
AND T.PROJECT_DIVISION='PND00000') T2,
(SELECT SUM(ORDER_PRICE) AS SUM3 FROM ORDER_MGMT T
WHERE TO_CHAR(TO_DATE(SUBSTR(PROJECT_NO,0,2),'YY'),'YYYY') = #{Year}
AND T.PROJECT_DIVISION='0001415') T3,
(SELECT SUM(ORDER_PRICE) AS SUM4 FROM ORDER_MGMT T
WHERE TO_CHAR(TO_DATE(SUBSTR(PROJECT_NO,0,2),'YY'),'YYYY') = #{Year}
AND T.PROJECT_DIVISION='0001414') T4
]]>
</select>
<!-- 발주금액 차트 -->
<select id="getmainDash_chart2" parameterType="map" resultType="map">
<![CDATA[
SELECT
T2.SUM1, --재료비
T2.TOTAL_SUM - T2.SUM1 AS SUM2, --노무비
T2.SETTLE_AMOUNT AS SUM3, --경비
nvl(T.OUTC_VALUE1, 0) + nvl(T.OUTC_VALUE2, 0) + nvl(T.OUTC_VALUE3, 0) + nvl(T.OUTC_VALUE4, 0) + nvl(T.OUTC_VALUE5, 0) + nvl(T.OUTC_VALUE6, 0) AS SUM4
from
ORDER_MGMT T,
PROJECT_MGMT T1,
(
select
A.*,
ROUND(((LABORCOSTS + LABORCOSTS_OUT) / ORDER_PRICE) * 100, 1) as LABORCOSTS_GOEL_RATE,
ROUND((LABORCOSTS + LABORCOSTS_OUT), 1) as TOTAL_LABORCOSTS,
ROUND((SETTLE_AMOUNT / ORDER_PRICE) * 100, 1) as SETTLE_GOEL_RATE,
A.SUM1 + ROUND((LABORCOSTS + LABORCOSTS_OUT), 1) + SETTLE_AMOUNT + TOTAL_LABOR_COST as TOTAL_SUM
from
(
select
B.ORDER_PRICE,
B.ORDER_MGMT_OBJID,
nvl(sum(C.WORK_TIME), 0) as WORK_TIME_TOTAL,
(
select
nvl(sum(T.WORK_TIME), 0)
from
TIME_SHEET T
where
T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
and T.REG_USER_ID not in (
'OUT1',
'OUT2'
)
) as WORK_TIME_OWN,
(
select
nvl(sum(T.WORK_TIME), 0)
from
TIME_SHEET T
where
T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
and T.REG_USER_ID in (
'OUT1',
'OUT2'
)
) as WORK_TIME_OUTSOURCING,
(
select
nvl(sum(T.WORK_TIME), 0)
from
TIME_SHEET T
where
T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
and T.REG_USER_ID not in (
'OUT1',
'OUT2'
)
and T.DEPT_ID = 'DD'
) as DD_WORK_TIME,
(
select
nvl(sum(T.WORK_TIME), 0)
from
TIME_SHEET T
where
T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
and T.REG_USER_ID not in (
'OUT1',
'OUT2'
)
and T.DEPT_ID = 'PT'
) as PT_WORK_TIME,
(
select
nvl(sum(T.WORK_TIME), 0)
from
TIME_SHEET T
where
T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
and T.REG_USER_ID not in (
'OUT1',
'OUT2'
)
and T.DEPT_ID = 'PM'
) as PM_WORK_TIME,
(
select
nvl(sum(LABORCOSTS), 0)
from
(
select
R.ORDINARY_HOURLY_WAGE,
T.WORK_TIME,
(TO_NUMBER(replace (R.ORDINARY_HOURLY_WAGE, ',', '')) * TO_NUMBER(T.WORK_TIME)) as LABORCOSTS,
T.PROJECT_MGMT_OBJID
from
TIME_SHEET T,
RATECAL_MGMT R
where
T.REG_USER_ID = R.USER_ID
and R.YYYY = to_char(sysdate, 'YYYY')
)
where
PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
) as LABORCOSTS,
(
select
nvl(sum(LABORCOSTS), 0)
from
(
select
R.ORDINARY_HOURLY_WAGE,
T.WORK_TIME,
(TO_NUMBER(replace (R.ORDINARY_HOURLY_WAGE, ',', '')) * TO_NUMBER(T.WORK_TIME)) as LABORCOSTS,
T.PROJECT_MGMT_OBJID
from
TIME_SHEET T,
RATECAL_MGMT R
where
T.REG_USER_ID = R.USER_ID
and USER_ID in (
'OUT1',
'OUT2'
)
and R.YYYY = to_char(sysdate, 'YYYY')
)
where
PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
) as LABORCOSTS_OUT,
nvl((D.CARD_SUM + D.CASH_SUM - D.PAY_SUM), 0) as SETTLE_AMOUNT,
(nvl(E.SUM1, 0) + nvl(Z.OUTSUM1, 0)) as SUM1,
nvl(E.AVR, 0) as AVR,
nvl((T4.PER_IN_COUNT * 160000) + (T4.PER_IN_OVER_COUNT * 200000), 0) + nvl((T4.PER_OUT_COUNT * 160000) + (T4.PER_OVER_COUNT * 200000), 0) + nvl((
select
nvl(sum(T.WORK_TIME), 0)
from
TIME_SHEET T
where
T.PROJECT_MGMT_OBJID = B.ORDER_MGMT_OBJID
and T.REG_USER_ID not in (
'OUT1',
'OUT2'
)
) * 25000, 0) as TOTAL_LABOR_COST
from
PROJECT_MGMT A,
ORDER_MGMT B,
TIME_SHEET C,
(
select
T1.PROJECT_MGMT_OBJID,
sum(T.CARD_SUM) as CARD_SUM,
sum(T.CASH_SUM) as CASH_SUM,
sum(T.PAY_SUM) as PAY_SUM
from
(
select
T.EXPENSE_MASTER_OBJID,
sum(T.CARD_USED) as CARD_SUM,
sum(T.CASH_USED) as CASH_SUM,
sum(T.PAYMENT) as PAY_SUM
from
EXPENSE_DETAIL T
group by
T.EXPENSE_MASTER_OBJID
) T,
EXPENSE_MASTER T1,
(
select
A.TARGET_OBJID
from
APPROVAL A,
ROUTE B
where
A.OBJID = B.APPROVAL_OBJID
and B.STATUS = 'complete'
) T3
where
T.EXPENSE_MASTER_OBJID = T1.EXPENSE_MASTER_OBJID
and T3.TARGET_OBJID = T1.EXPENSE_MASTER_OBJID
group by
PROJECT_MGMT_OBJID
) D,
(
select
PROJECT_MGMT_OBJID,
sum(nvl(T.FINAL_ORDER_AMOUNT, 0)) as SUM1,
T1.ORDER_PRICE,
ROUND(sum(nvl(T.FINAL_ORDER_AMOUNT, 0)) / T1.ORDER_PRICE * 100, 1) as AVR
from
MATERIAL_MASTER_MGMT T,
ORDER_MGMT T1
where
T.STATUS_CD in (
'PURSTCD00700',
'PURSTCD00800'
)
and T.PROJECT_MGMT_OBJID = T1.ORDER_MGMT_OBJID
group by
T.PROJECT_MGMT_OBJID,
T1.ORDER_PRICE
) E,
(
select
PROJECT_MGMT_OBJID,
sum(nvl(P.SUP_PRICE, 0)) as OUTSUM1
from
PART_MGMT P
where
P.REL_STATUS = 'PRTS00300'
group by
P.PROJECT_MGMT_OBJID
) Z,
(
select
to_char(nvl(sum(H.PER_IN_COUNT), 0)) as PER_IN_COUNT,
to_char(nvl(sum(H.PER_IN_OVER_COUNT), 0)) as PER_IN_OVER_COUNT,
to_char(nvl(sum(H.PER_OUT_COUNT), 0)) + to_char(nvl(sum(H.PER_OUT_COUNT1), 0)) + to_char(nvl(sum(H.PER_OUT_COUNT2), 0)) + to_char(nvl(sum(H.PER_OUT_COUNT3), 0)) + to_char(nvl(sum(H.PER_OUT_COUNT4), 0)) + to_char(nvl(sum(H.PER_OUT_COUNT5), 0)) as PER_OUT_COUNT,
to_char(nvl(sum(H.PER_OVER_COUNT), 0)) + to_char(nvl(sum(H.PER_OVER_COUNT1), 0)) + to_char(nvl(sum(H.PER_OVER_COUNT2), 0)) + to_char(nvl(sum(H.PER_OVER_COUNT3), 0)) + to_char(nvl(sum(H.PER_OVER_COUNT4), 0)) + to_char(nvl(sum(H.PER_OVER_COUNT5), 0)) as PER_OVER_COUNT,
F.PROJECT_MGMT_OBJID
from
HUMAN_INPUT_PLAN H,
FACILITY_ASSEMBLY_PLAN F
where
H.ASSEMBLY_PLAN_OBJID = F.ASSEMBLY_PLAN_OBJID
group by
F.PROJECT_MGMT_OBJID
) T4
where
A.ORDER_MGMT_OBJID = B.ORDER_MGMT_OBJID
and A.ORDER_MGMT_OBJID = C.PROJECT_MGMT_OBJID(+)
and A.PROJECT_MGMT_OBJID = D.PROJECT_MGMT_OBJID(+)
and A.ORDER_MGMT_OBJID = E.PROJECT_MGMT_OBJID(+)
and A.ORDER_MGMT_OBJID = Z.PROJECT_MGMT_OBJID(+)
and A.PROJECT_MGMT_OBJID = T4.PROJECT_MGMT_OBJID(+)
group by
B.PROJECT_NO,
B.REGION_CD,
B.CUSTOMER_CD,
A.ORDER_CD,
A.PROJECT_TITLE,
B.ORDER_TITLE,
B.DEL_DATE,
B.REG_DATE,
B.ORDER_PRICE,
B.ORDER_MGMT_OBJID,
B.PROJECT_DIVISION,
B.PROJECT_DERIVATION_NO,
PROJECT_MEAN,
PER_IN_COUNT,
PER_IN_OVER_COUNT,
PER_OUT_COUNT,
PER_OVER_COUNT,
nvl((D.CARD_SUM + D.CASH_SUM - D.PAY_SUM), 0),
E.SUM1,
Z.OUTSUM1,
E.AVR
) A
) T2,
(
select
TARGET_OBJID,
sum((TASK_END_PLAN_DATE - TASK_START_PLAN_DATE) + 1) as PLAN_DUR,
sum((TASK_END_DATE - TASK_START_DATE) + 1) as REAL_DUR
from
PMS_WBS_TASK TASK
where
TASK.IS_TEMPLATE_TASK = 1
start with
TASK.PARENT_OBJID is null
and PROJ_STEP = '1'
connect by
prior TASK.OBJID = TASK.PARENT_OBJID
group by
TARGET_OBJID
) T3
where
T.ORDER_MGMT_OBJID = T1.ORDER_MGMT_OBJID
and T1.ORDER_MGMT_OBJID = T2.ORDER_MGMT_OBJID
and T1.PROJECT_MGMT_OBJID = T3.TARGET_OBJID
and T.RESULT_CD = 'RES00300'
AND T.ORDER_MGMT_OBJID = #{objId}
]]>
</select>
<!-- 간트 차트 -->
<select id="getmainDash_gantt" parameterType="map" resultType="map">
<![CDATA[
SELECT T1.TASK_NAME
,TO_CHAR(T1.TASK_START_PLAN_DATE,'YYYY-MM-DD') AS TASK_START_PLAN_DATE
,TO_CHAR(T1.TASK_END_PLAN_DATE,'YYYY-MM-DD') AS TASK_END_PLAN_DATE
,T1.PLAN_DUR
,TO_CHAR(T1.TASK_START_DATE,'YYYY-MM-DD') AS TASK_START_DATE
,TO_CHAR(T1.TASK_END_DATE,'YYYY-MM-DD') AS TASK_END_DATE
,T1.DUR
,T1.DELAY
,T1.STATUS
FROM (SELECT '1' AS RNUM,
T.*
FROM (SELECT MAX(T.STEP_NAME) AS TASK_NAME,
MIN(T.TASK_START_DATE) AS TASK_START_DATE,
MAX(T.TASK_END_DATE) AS TASK_END_DATE,
MIN(T.TASK_START_PLAN_DATE) AS TASK_START_PLAN_DATE,
MAX(T.TASK_END_PLAN_DATE) AS TASK_END_PLAN_DATE,
TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD') AS PLAN_DUR,
TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD') AS DUR,
TO_NUMBER(TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD')) - TO_NUMBER(TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD')) AS delay,
CASE WHEN MAX(T.TASK_END_PLAN_DATE) IS null
then 'noing'
WHEN MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') > TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'ing'
when MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'delay'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') >= TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'complet'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'delaycomplet'
end as STATUS
FROM PMS_WBS_TASK T, PROJECT_MGMT T1
WHERE T.TARGET_OBJID = T1.PROJECT_MGMT_OBJID
AND T1.ORDER_MGMT_OBJID = #{objId}
AND T.TASK_STEP = '1') T
UNION
SELECT '2' AS RNUM,
T.*
FROM (SELECT MAX(T.STEP_NAME) AS TASK_NAME,
MIN(T.TASK_START_DATE) AS TASK_START_DATE,
MAX(T.TASK_END_DATE) AS TASK_END_DATE,
MIN(T.TASK_START_PLAN_DATE) AS TASK_START_PLAN_DATE,
MAX(T.TASK_END_PLAN_DATE) AS TASK_END_PLAN_DATE,
TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD') AS PLAN_DUR,
TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD') AS DUR,
TO_NUMBER(TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD')) - TO_NUMBER(TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD')) AS delay,
CASE WHEN MAX(T.TASK_END_PLAN_DATE) IS null
then 'noing'
WHEN MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') > TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'ing'
when MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'delay'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') >= TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'complet'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'delaycomplet'
end as STATUS
FROM PMS_WBS_TASK T, PROJECT_MGMT T1
WHERE T.TARGET_OBJID = T1.PROJECT_MGMT_OBJID
AND T1.ORDER_MGMT_OBJID = #{objId}
AND T.TASK_STEP = '2') T
UNION
SELECT '3' AS RNUM,
T.*
FROM (SELECT MAX(T.STEP_NAME) AS TASK_NAME,
MIN(T.TASK_START_DATE) AS TASK_START_DATE,
MAX(T.TASK_END_DATE) AS TASK_END_DATE,
MIN(T.TASK_START_PLAN_DATE) AS TASK_START_PLAN_DATE,
MAX(T.TASK_END_PLAN_DATE) AS TASK_END_PLAN_DATE,
TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD') AS PLAN_DUR,
TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD') AS DUR,
TO_NUMBER(TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD')) - TO_NUMBER(TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD')) AS delay,
CASE WHEN MAX(T.TASK_END_PLAN_DATE) IS null
then 'noing'
WHEN MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') > TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'ing'
when MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'delay'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') >= TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'complet'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'delaycomplet'
end as STATUS
FROM PMS_WBS_TASK T, PROJECT_MGMT T1
WHERE T.TARGET_OBJID = T1.PROJECT_MGMT_OBJID
AND T1.ORDER_MGMT_OBJID = #{objId}
AND T.TASK_STEP = '3') T
UNION
SELECT '4' AS RNUM,
T.*
FROM (SELECT MAX(T.STEP_NAME) AS TASK_NAME,
MIN(T.TASK_START_DATE) AS TASK_START_DATE,
MAX(T.TASK_END_DATE) AS TASK_END_DATE,
MIN(T.TASK_START_PLAN_DATE) AS TASK_START_PLAN_DATE,
MAX(T.TASK_END_PLAN_DATE) AS TASK_END_PLAN_DATE,
TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD') AS PLAN_DUR,
TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD') AS DUR,
TO_NUMBER(TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD')) - TO_NUMBER(TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD')) AS delay,
CASE WHEN MAX(T.TASK_END_PLAN_DATE) IS null
then 'noing'
WHEN MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') > TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'ing'
when MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'delay'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') >= TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'complet'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'delaycomplet'
end as STATUS
FROM PMS_WBS_TASK T, PROJECT_MGMT T1
WHERE T.TARGET_OBJID = T1.PROJECT_MGMT_OBJID
AND T1.ORDER_MGMT_OBJID = #{objId}
AND T.TASK_STEP = '4') T
UNION
SELECT '5' AS RNUM,
T.*
FROM (SELECT MAX(T.STEP_NAME) AS TASK_NAME,
MIN(T.TASK_START_DATE) AS TASK_START_DATE,
MAX(T.TASK_END_DATE) AS TASK_END_DATE,
MIN(T.TASK_START_PLAN_DATE) AS TASK_START_PLAN_DATE,
MAX(T.TASK_END_PLAN_DATE) AS TASK_END_PLAN_DATE,
TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD') AS PLAN_DUR,
TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD') AS DUR,
TO_NUMBER(TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD')) - TO_NUMBER(TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD')) AS delay,
CASE WHEN MAX(T.TASK_END_PLAN_DATE) IS null
then 'noing'
WHEN MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') > TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'ing'
when MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'delay'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') >= TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'complet'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'delaycomplet'
end as STATUS
FROM PMS_WBS_TASK T, PROJECT_MGMT T1
WHERE T.TARGET_OBJID = T1.PROJECT_MGMT_OBJID
AND T1.ORDER_MGMT_OBJID = #{objId}
AND T.TASK_STEP = '5') T
UNION
SELECT '6' AS RNUM,
T.*
FROM (SELECT MAX(T.STEP_NAME) AS TASK_NAME,
MIN(T.TASK_START_DATE) AS TASK_START_DATE,
MAX(T.TASK_END_DATE) AS TASK_END_DATE,
MIN(T.TASK_START_PLAN_DATE) AS TASK_START_PLAN_DATE,
MAX(T.TASK_END_PLAN_DATE) AS TASK_END_PLAN_DATE,
TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD') AS PLAN_DUR,
TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD') AS DUR,
TO_NUMBER(TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD')) - TO_NUMBER(TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD')) AS delay,
CASE WHEN MAX(T.TASK_END_PLAN_DATE) IS null
then 'noing'
WHEN MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') > TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'ing'
when MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'delay'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') >= TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'complet'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'delaycomplet'
end as STATUS
FROM PMS_WBS_TASK T, PROJECT_MGMT T1
WHERE T.TARGET_OBJID = T1.PROJECT_MGMT_OBJID
AND T1.ORDER_MGMT_OBJID = #{objId}
AND T.TASK_STEP = '6') T
UNION
SELECT '7' AS RNUM,
T.*
FROM (SELECT MAX(T.STEP_NAME) AS TASK_NAME,
MIN(T.TASK_START_DATE) AS TASK_START_DATE,
MAX(T.TASK_END_DATE) AS TASK_END_DATE,
MIN(T.TASK_START_PLAN_DATE) AS TASK_START_PLAN_DATE,
MAX(T.TASK_END_PLAN_DATE) AS TASK_END_PLAN_DATE,
TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD') AS PLAN_DUR,
TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD') AS DUR,
TO_NUMBER(TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD')) - TO_NUMBER(TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD')) AS delay,
CASE WHEN MAX(T.TASK_END_PLAN_DATE) IS null
then 'noing'
WHEN MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') > TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'ing'
when MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'delay'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') >= TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'complet'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'delaycomplet'
end as STATUS
FROM PMS_WBS_TASK T, PROJECT_MGMT T1
WHERE T.TARGET_OBJID = T1.PROJECT_MGMT_OBJID
AND T1.ORDER_MGMT_OBJID = #{objId}
AND T.TASK_STEP = '7') T
UNION
SELECT '8' AS RNUM,
T.*
FROM (SELECT MAX(T.STEP_NAME) AS TASK_NAME,
MIN(T.TASK_START_DATE) AS TASK_START_DATE,
MAX(T.TASK_END_DATE) AS TASK_END_DATE,
MIN(T.TASK_START_PLAN_DATE) AS TASK_START_PLAN_DATE,
MAX(T.TASK_END_PLAN_DATE) AS TASK_END_PLAN_DATE,
TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD') AS PLAN_DUR,
TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')+1 - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD') AS DUR,
TO_NUMBER(TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_DATE),'YY-MM-DD')) - TO_NUMBER(TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') - TO_DATE(MIN(T.TASK_START_PLAN_DATE),'YY-MM-DD')) AS delay,
CASE WHEN MAX(T.TASK_END_PLAN_DATE) IS null
then 'noing'
WHEN MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') > TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'ing'
when MAX(T.TASK_END_DATE) IS null AND TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(TO_CHAR(SYSDATE,'YY-MM-DD'),'YY-MM-DD')
then 'delay'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') >= TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'complet'
when TO_DATE(MAX(T.TASK_END_PLAN_DATE),'YY-MM-DD') < TO_DATE(MAX(T.TASK_END_DATE),'YY-MM-DD')
then 'delaycomplet'
end as STATUS
FROM PMS_WBS_TASK T, PROJECT_MGMT T1
WHERE T.TARGET_OBJID = T1.PROJECT_MGMT_OBJID
AND T1.ORDER_MGMT_OBJID = #{objId}
AND T.TASK_STEP = '8') T
) T1
ORDER BY T1.RNUM
]]>
</select>
<!-- //Gate 현황 > 부서별 Task 조치현황 chart3 -->
<select id="getGateProblemStatus_chart3" parameterType="map" resultType="map">
SELECT AAA.*, CASE WHEN ALL_CNT * COMPLETE_CNT = 0 THEN 0 ELSE ROUND(COMPLETE_CNT / ALL_CNT * 100, 1) END AS COMPLETE_RATIO
FROM (
SELECT AA.TASK_DEPT
, (SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = AA.TASK_DEPT) AS TASK_DEPT_NAME
, COUNT(TASK_DEPT) AS ALL_CNT
, COUNT(CASE WHEN UPPER(AA.STATUS) = 'COMPLETE' THEN 1 ELSE NULL END) AS COMPLETE_CNT
FROM (
SELECT B.TASK_DEPT
, B.TASK_CHARGER_ID
, B.STATUS
FROM PMS_PJT_INFO A, PMS_WBS_TASK B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
AND B.IS_TEMPLATE_TASK = 1
AND UPPER(B.TASK_TYPE) = 'TASK'
AND B.TASK_DEPT IS NOT NULL
AND B.TASK_CHARGER_ID IS NOT NULL
<choose>
<when test="search_carObjId != null and !''.equals(search_carObjId)">
AND A.CAR_OBJID = #{search_carObjId}
</when>
<otherwise>
AND A.CAR_OBJID = (SELECT CAR_OBJID FROM (SELECT CAR_OBJID FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) ORDER BY MILESTONE_DATE DESC NULLS LAST) WHERE ROWNUM = 1)
</otherwise>
</choose>
) AA
WHERE 1=1
GROUP BY AA.TASK_DEPT
ORDER BY TASK_DEPT NULLS LAST
) AAA
WHERE 1=1
ORDER BY COMPLETE_RATIO DESC
</select>
<!-- //Gate 현황 > 부서별 Task 조치현황 chart3 Sub data-->
<select id="getGateProblemStatus_chart3Subdata" parameterType="map" resultType="map">
SELECT AAA.*
, CASE WHEN ALL_CNT * COMPLETE_CNT = 0 THEN 0 ELSE ROUND(COMPLETE_CNT / ALL_CNT * 100, 1) END AS COMPLETE_RATIO
, (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = AAA.TASK_CHARGER_ID) AS DEPT_CODE
FROM (
SELECT AA.TASK_CHARGER_ID
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = AA.TASK_CHARGER_ID) AS TASK_CHARGER_NAME
, COUNT(*) AS ALL_CNT
, COUNT(CASE WHEN UPPER(AA.STATUS) = 'COMPLETE' THEN 1 ELSE NULL END) AS COMPLETE_CNT
FROM (
SELECT B.TASK_DEPT
, B.TASK_CHARGER_ID
, B.STATUS
FROM PMS_PJT_INFO A, PMS_WBS_TASK B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
AND B.IS_TEMPLATE_TASK = 1
AND UPPER(B.TASK_TYPE) = 'TASK'
AND B.TASK_DEPT IS NOT NULL
AND B.TASK_CHARGER_ID IS NOT NULL
<choose>
<when test="search_carObjId != null and !''.equals(search_carObjId)">
AND A.CAR_OBJID = #{search_carObjId}
</when>
<otherwise>
AND A.CAR_OBJID = (SELECT CAR_OBJID FROM (SELECT CAR_OBJID FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) ORDER BY MILESTONE_DATE DESC NULLS LAST) WHERE ROWNUM = 1)
</otherwise>
</choose>
) AA
WHERE 1=1
GROUP BY AA.TASK_CHARGER_ID
) AAA
WHERE 1=1
ORDER BY COMPLETE_RATIO DESC
</select>
<!-- //Gate 현황 > issue현황 chart4 -->
<select id="getGateProblemStatus_chart4" parameterType="map" resultType="map">
SELECT AAA.*
, CASE WHEN ALL_CNT * COMPLETE_CNT = 0 THEN 0 ELSE ROUND(COMPLETE_CNT / ALL_CNT * 100, 1) END AS COMPLETE_RATIO
FROM (
SELECT AA.CAR_OBJID
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = AA.CAR_OBJID) AS OEM_OBJID
, AA.CAR_CODE
, COUNT(*) AS ALL_CNT
, COUNT(CASE WHEN AA.COMPLETE_DATE IS NOT NULL THEN 1 ELSE NULL END) AS COMPLETE_CNT
, COUNT(CASE WHEN AA.COMPLETE_DATE IS NULL THEN 1 ELSE NULL END) AS ONGOING_CNT
FROM (
SELECT A.CAR_OBJID
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, A.COMPLETE_DATE
, (SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) AND CAR_OBJID = A.CAR_OBJID) AS SOP_DATE
FROM PMS_ISSUE_INFO A
WHERE 1=1
) AA
GROUP BY CAR_OBJID, CAR_CODE, SOP_DATE
ORDER BY SOP_DATE DESC NULLS LAST
) AAA
WHERE 1=1
</select>
<!-- 화면 최초 로드 시 대상 데이터가 존재하는 SOP 제일 먼 차종,고객사,제품군의 정보를 가져온다.-->
<select id="getProductDevEOApplyBaseParamInfo" parameterType="map" resultType="map">
SELECT
OEM_OBJID,
CAR_OBJID,
PRODUCT_GROUP_OBJID
FROM(
SELECT
A.CAR_OBJID
,(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
,A.CAR_CODE
,A.PRODUCT_GROUP_OBJID
,(SELECT CAR_MILE.MILESTONE_DATE FROM OEM_MILESTONE_MNG OEM_MILE, CAR_MILESTONE_MNG CAR_MILE WHERE OEM_MILE.OBJID = CAR_MILE.MILESTONE_OBJID AND UPPER(OEM_MILE.MILESTONE_NAME) = 'SOP' AND CAR_MILE.CAR_OBJID = A.CAR_OBJID AND OEM_MILE.OEM_OBJID = A.OEM_OBJID) AS SOP_DATE
FROM (
SELECT
PART.OEM_OBJID
,PART.CAR_OBJID
,(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PART.CAR_OBJID) CAR_CODE
,PART.PRODUCT_GROUP_OBJID
, APPLY.ILJI_APPLY_POINT_DATE
FROM (
SELECT P.*
FROM EO_INFO E, PART_INFO P
WHERE 1=1
AND E.OBJID = P.EO_OBJID
AND UPPER(P.STATUS) = 'COMPLETE'
AND UPPER(E.STATUS) = 'RELEASE'
AND UPPER(P.DRAWING_TYPE) = 'DRAW'
) PART, PMS_EO_APPLY_INFO APPLY
WHERE 1=1
AND PART.OBJID = APPLY.TARGET_OBJID(+)
) A
WHERE 1=1
GROUP BY A.OEM_OBJID,A.CAR_OBJID,A.CAR_CODE,A.PRODUCT_GROUP_OBJID
ORDER BY SOP_DATE DESC NULLS LAST,A.CAR_CODE
) WHERE ROWNUM=1
</select>
<!-- 제품개발관리 Grid 1 -->
<select id="getProductDevEOApplyStatus_grid1" parameterType="map" resultType="map">
SELECT AA.*
, CASE WHEN (AA.ALL_CNT * AA.APPLY_CNT) = 0 THEN 0 ELSE ROUND((AA.APPLY_CNT/AA.ALL_CNT) * 100, 1) END AS APPLY_RATIO
FROM (
SELECT A.CAR_OBJID
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, A.OEM_OBJID
, COUNT(*) AS ALL_CNT
, COUNT(CASE WHEN A.ILJI_APPLY_POINT_DATE IS NOT NULL THEN 1 ELSE NULL END) AS APPLY_CNT
, COUNT(CASE WHEN A.ILJI_APPLY_POINT_DATE IS NULL THEN 1 ELSE NULL END) AS NON_APPLY_CNT
, (SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND OEM_OBJID = A.OEM_OBJID AND ROWNUM = 1) AND CAR_OBJID = A.CAR_OBJID) AS SOP_DATE
FROM (
SELECT PART.CAR_OBJID
, PART.OEM_OBJID
, APPLY.ILJI_APPLY_POINT_DATE
FROM (
SELECT P.*
FROM EO_INFO E, PART_INFO P
WHERE 1=1
AND E.OBJID = P.EO_OBJID
AND UPPER(P.STATUS) = 'COMPLETE'
AND UPPER(E.STATUS) = 'RELEASE'
AND UPPER(P.DRAWING_TYPE) = 'DRAW'
) PART, PMS_EO_APPLY_INFO APPLY
WHERE 1=1
AND PART.OBJID = APPLY.TARGET_OBJID(+)
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND PART.CAR_OBJID = #{search_carObjId}
</if>
) A
WHERE 1=1
GROUP BY A.OEM_OBJID,A.CAR_OBJID
ORDER BY SOP_DATE DESC NULLS LAST
) AA
WHERE 1=1
AND ROWNUM <![CDATA[ <= ]]> 6
</select>
<!-- 제품개발관리 Grid 2 -->
<select id="getProductDevEOApplyStatus_grid2" parameterType="map" resultType="map">
SELECT AA.*
, CASE WHEN (AA.ALL_CNT * AA.MOLD_REGISTED_CNT) = 0 THEN 0 ELSE ROUND((AA.MOLD_REGISTED_CNT/AA.ALL_CNT) * 100, 1) END AS MOLD_REGISTED_RATIO
, CASE WHEN (AA.ALL_CNT * AA.JIG_REGISTED_CNT) = 0 THEN 0 ELSE ROUND((AA.JIG_REGISTED_CNT/AA.ALL_CNT) * 100, 1) END AS JIG_REGISTED_RATIO
, AA.SOP_DATE
FROM (
SELECT A.CAR_OBJID
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS CAR_CODE
, A.OEM_OBJID
, COUNT(*) AS ALL_CNT
, COUNT(CASE WHEN A.MOLD_MODIFY_DOC_WRITE_TYPE IS NOT NULL AND A.MOLD_VAATZ_NO IS NOT NULL THEN 1 ELSE NULL END) AS MOLD_REGISTED_CNT
, COUNT(CASE WHEN A.MOLD_MODIFY_DOC_WRITE_TYPE = 'Y' AND A.MOLD_VAATZ_NO IS NULL THEN 1 ELSE NULL END) AS MOLD_NOT_REGISTED_CNT
, COUNT(CASE WHEN A.MOLD_MODIFY_DOC_WRITE_TYPE = 'N' THEN 1 ELSE NULL END) AS MOLD_NO_TARGET_CNT
, COUNT(CASE WHEN A.MOLD_MODIFY_DOC_WRITE_TYPE IS NULL THEN 1 ELSE NULL END) AS MOLD_TARGET_NO_CHOOSE_CNT
, COUNT(CASE WHEN A.JIG_MODIFY_DOC_WRITE_TYPE = 'Y' AND A.JIG_VAATZ_NO IS NOT NULL THEN 1 ELSE NULL END) AS JIG_REGISTED_CNT
, COUNT(CASE WHEN A.JIG_MODIFY_DOC_WRITE_TYPE = 'Y' AND A.JIG_VAATZ_NO IS NULL THEN 1 ELSE NULL END) AS JIG_NOT_REGISTED_CNT
, COUNT(CASE WHEN A.JIG_MODIFY_DOC_WRITE_TYPE = 'N' THEN 1 ELSE NULL END) AS JIG_NO_TARGET_CNT
, COUNT(CASE WHEN A.JIG_MODIFY_DOC_WRITE_TYPE IS NULL THEN 1 ELSE NULL END) AS JIG_TARGET_NO_CHOOSE_CNT
, (SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND UPPER(STATUS) = UPPER('ACTIVE') AND OEM_OBJID = A.OEM_OBJID) AND CAR_OBJID = A.CAR_OBJID) AS SOP_DATE
FROM (
SELECT PART.CAR_OBJID
, PART.OEM_OBJID
, APPLY.MOLD_MODIFY_DOC_WRITE_TYPE
, APPLY.MOLD_VAATZ_NO
, APPLY.JIG_MODIFY_DOC_WRITE_TYPE
, APPLY.JIG_VAATZ_NO
FROM (
SELECT P.*
FROM EO_INFO E, PART_INFO P
WHERE 1=1
AND E.OBJID = P.EO_OBJID
AND UPPER(P.STATUS) = 'COMPLETE'
AND UPPER(E.STATUS) = 'RELEASE'
AND UPPER(P.DRAWING_TYPE) = 'DRAW'
) PART, PMS_EO_APPLY_INFO APPLY
WHERE 1=1
AND PART.OBJID = APPLY.TARGET_OBJID(+)
) A
WHERE 1=1
GROUP BY A.CAR_OBJID,A.OEM_OBJID
ORDER BY SOP_DATE DESC NULLS LAST
) AA
WHERE 1=1
AND ROWNUM <![CDATA[ <= ]]> 6
</select>
<!-- //Dashboard Task 진행현황 -->
<select id="getDashboardTaskStatus_grid3" parameterType="map" resultType="map">
SELECT AA.CAR_OBJID
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = AA.CAR_OBJID) AS CAR_CODE
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = AA.CAR_OBJID) AS OEM_OBJID
, CASE WHEN (TASK_COMPLETE_CNT * TASK_ALL_CNT) = 0 THEN 0 ELSE ROUND((TASK_COMPLETE_CNT / TASK_ALL_CNT)*100, 1) END AS TASK_RATIO
, TASK_ALL_CNT
, TASK_COMPLETE_CNT
, TASK_PLAN_CNT
, TASK_ONGOING_CNT
, TASK_DELAY_CNT
, SOP_DATE
FROM (
SELECT A.CAR_OBJID
, (SELECT COUNT(*) FROM PMS_WBS_TASK WHERE IS_TEMPLATE_TASK = 1 AND TARGET_OBJID = A.OBJID AND TASK_TYPE = 'task') AS TASK_ALL_CNT
, (SELECT COUNT(*) FROM PMS_WBS_TASK WHERE IS_TEMPLATE_TASK = 1 AND TARGET_OBJID = A.OBJID AND TASK_TYPE = 'task' AND UPPER(STATUS) = 'COMPLETE') AS TASK_COMPLETE_CNT
, (SELECT COUNT(*) FROM PMS_WBS_TASK WHERE IS_TEMPLATE_TASK = 1 AND TARGET_OBJID = A.OBJID AND TASK_TYPE = 'task' AND UPPER(STATUS) = 'CREATE' AND SYSDATE <![CDATA[ < ]]> TASK_START_PLAN_DATE) AS TASK_PLAN_CNT
, (SELECT COUNT(*) FROM PMS_WBS_TASK WHERE IS_TEMPLATE_TASK = 1 AND TARGET_OBJID = A.OBJID AND TASK_TYPE = 'task' AND UPPER(STATUS) = 'CREATE' AND SYSDATE <![CDATA[ > ]]> TASK_START_PLAN_DATE AND SYSDATE <![CDATA[ < ]]> TASK_END_PLAN_DATE) AS TASK_ONGOING_CNT
, (SELECT COUNT(*) FROM PMS_WBS_TASK WHERE IS_TEMPLATE_TASK = 1 AND TARGET_OBJID = A.OBJID AND TASK_TYPE = 'task' AND UPPER(STATUS) = 'CREATE' AND SYSDATE <![CDATA[ > ]]> TASK_END_PLAN_DATE) AS TASK_DELAY_CNT
, (SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) AND CAR_OBJID = A.CAR_OBJID) AS SOP_DATE
FROM PMS_PJT_INFO A
WHERE 1=1
AND UPPER(A.STATUS) = 'CONFIRM'
ORDER BY SOP_DATE DESC NULLS LAST
) AA
WHERE 1=1
</select>
<!-- //문제점 목록조회 -->
<select id="getProblemList" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT A.OBJID AS PROBLEM_GROUP_OBJID
, A.REGION
, A.STEP1
, A.STEP2
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID)) AS OEM_NAME
, 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
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID)) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, A.TEST_TYPE_OBJID
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = A.TEST_TYPE_OBJID) AS TEST_TYPE_NAME
, A.TITLE
, A.RES_PIC AS RES_PIC_UESR_ID
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.RES_PIC) AS RES_PIC_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.RES_PIC) AS RES_PIC_USER_NAME
, TO_CHAR(A.DISTRIBUTE_DATE, 'YYYY-MM-DD') AS DISTRIBUTE_DATE
, TO_CHAR(A.RES_DISTRIBUTE_DATE, 'YYYY-MM-DD') AS RES_DISTRIBUTE_DATE
, A.WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_USER_NAME
, A.STATUS AS PROBLEM_GROUP_STATUS
, A.APPROVAL_STATUS
, A.CURRENT_ROUTE_OBJID
, B.OBJID AS PROBLEM_OBJID
, B.TYPE1
, B.TYPE2
, B.IMPUTATION
, TO_CHAR(B.REQ_DATE, 'YYYY-MM-DD') AS REQ_DATE
, B.PART_NO
, TO_CHAR(B.RES_PLAN_DATE, 'YYYY-MM-DD') AS RES_PLAN_DATE
, B.SUBJECT
, B.UNMANAGE_TYPE
, TO_CHAR(B.RES_MODIFY_DATE, 'YYYY-MM-DD') AS RES_MODIFY_DATE
, TO_CHAR(B.REFLECT_PLAN_DATE, 'YYYY-MM-DD') AS REFLECT_PLAN_DATE
, B.REFLECT_RESULT
, B.CONTINUAL_MNG_TYPE
, B.STATUS AS PROBLEM_STATUS
FROM PMS_PROBLEM_GROUP A, PMS_PROBLEM_INFO B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND B.UNMANAGE_TYPE IS NULL
ORDER BY B.REGDATE DESC
) AA
WHERE 1=1
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND AA.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND AA.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_prodGroupObjId != null and !''.equals(search_prodGroupObjId)">
AND AA.PROD_GROUP_OBJID = #{search_prodGroupObjId}
</if>
<if test="search_prodObjId != null and !''.equals(search_prodObjId)">
AND AA.PROD_OBJID = #{search_prodObjId}
</if>
<if test="step1 != null and !''.equals(step1)">
AND AA.STEP1 = #{step1}
</if>
<if test="step2 != null and !''.equals(step2)">
AND AA.STEP2 = #{step2}
</if>
<if test="type1 != null and !''.equals(type1)">
AND AA.TYPE1 = #{type1}
</if>
<if test="type2 != null and !''.equals(type2)">
AND AA.TYPE2 = #{type2}
</if>
<if test="search_partNo != null and !''.equals(search_partNo)">
AND UPPER(AA.PART_NO) LIKE UPPER('%${search_partNo}%')
</if>
<if test="search_status != null and !''.equals(search_status)">
AND AA.PROBLEM_STATUS = #{search_status}
</if>
<if test="search_reqFromDate != null and !''.equals(search_reqFromDate)">
AND TO_DATE(AA.REQ_DATE, 'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_reqFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_reqToDate != null and !''.equals(search_reqToDate)">
AND TO_DATE(AA.REQ_DATE, 'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_reqToDate}, 'YYYY-MM-DD')
</if>
<if test="search_resPlanFromDate != null and !''.equals(search_resPlanFromDate)">
AND TO_DATE(AA.RES_PLAN_DATE, 'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_resPlanFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_resPlanToDate != null and !''.equals(search_resPlanToDate)">
AND TO_DATE(AA.RES_PLAN_DATE, 'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_resPlanToDate}, 'YYYY-MM-DD')
</if>
</select>
<!-- //문제점 상태별 count조회 -->
<select id="getProblemCount_byStatus" parameterType="map" resultType="map">
SELECT COUNT(*) AS ALL_CNT
, COUNT(CASE WHEN UPPER(AA.PROBLEM_STATUS) = 'COMPLETE' THEN 1 ELSE NULL END) AS COMPLETE_CNT
, COUNT(CASE WHEN UPPER(AA.PROBLEM_STATUS) = 'CREATE' THEN 1 ELSE NULL END) AS ONGOING_CNT
FROM (
SELECT A.OBJID AS PROBLEM_GROUP_OBJID
, A.REGION
, A.STEP1
, A.STEP2
, (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID) AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = A.CAR_OBJID)) AS OEM_NAME
, 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
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID)) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, A.TEST_TYPE_OBJID
, (SELECT TEST_TYPE_NAME FROM TEST_TYPE_MNG WHERE OBJID = A.TEST_TYPE_OBJID) AS TEST_TYPE_NAME
, A.TITLE
, A.RES_PIC AS RES_PIC_UESR_ID
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.RES_PIC) AS RES_PIC_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.RES_PIC) AS RES_PIC_USER_NAME
, TO_CHAR(A.DISTRIBUTE_DATE, 'YYYY-MM-DD') AS DISTRIBUTE_DATE
, TO_CHAR(A.RES_DISTRIBUTE_DATE, 'YYYY-MM-DD') AS RES_DISTRIBUTE_DATE
, A.WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.WRITER) AS WRITER_USER_NAME
, A.STATUS AS PROBLEM_GROUP_STATUS
, A.APPROVAL_STATUS
, A.CURRENT_ROUTE_OBJID
, B.OBJID AS PROBLEM_OBJID
, B.TYPE1
, B.TYPE2
, B.IMPUTATION
, TO_CHAR(B.REQ_DATE, 'YYYY-MM-DD') AS REQ_DATE
, B.PART_NO
, TO_CHAR(B.RES_PLAN_DATE, 'YYYY-MM-DD') AS RES_PLAN_DATE
, B.SUBJECT
, B.UNMANAGE_TYPE
, TO_CHAR(B.RES_MODIFY_DATE, 'YYYY-MM-DD') AS RES_MODIFY_DATE
, TO_CHAR(B.REFLECT_PLAN_DATE, 'YYYY-MM-DD') AS REFLECT_PLAN_DATE
, B.REFLECT_RESULT
, B.CONTINUAL_MNG_TYPE
, B.STATUS AS PROBLEM_STATUS
FROM PMS_PROBLEM_GROUP A, PMS_PROBLEM_INFO B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND B.UNMANAGE_TYPE IS NULL
ORDER BY B.REGDATE DESC
) AA
WHERE 1=1
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND AA.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND AA.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_prodGroupObjId != null and !''.equals(search_prodGroupObjId)">
AND AA.PROD_GROUP_OBJID = #{search_prodGroupObjId}
</if>
<if test="search_prodObjId != null and !''.equals(search_prodObjId)">
AND AA.PROD_OBJID = #{search_prodObjId}
</if>
<if test="step1 != null and !''.equals(step1)">
AND AA.STEP1 = #{step1}
</if>
<if test="step2 != null and !''.equals(step2)">
AND AA.STEP2 = #{step2}
</if>
<if test="type1 != null and !''.equals(type1)">
AND AA.TYPE1 = #{type1}
</if>
<if test="type2 != null and !''.equals(type2)">
AND AA.TYPE2 = #{type2}
</if>
<if test="search_partNo != null and !''.equals(search_partNo)">
AND UPPER(AA.PART_NO) LIKE UPPER('%${search_partNo}%')
</if>
<if test="search_status != null and !''.equals(search_status)">
AND AA.PROBLEM_STATUS = #{search_status}
</if>
<if test="search_reqFromDate != null and !''.equals(search_reqFromDate)">
AND TO_DATE(AA.REQ_DATE, 'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_reqFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_reqToDate != null and !''.equals(search_reqToDate)">
AND TO_DATE(AA.REQ_DATE, 'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_reqToDate}, 'YYYY-MM-DD')
</if>
<if test="search_resPlanFromDate != null and !''.equals(search_resPlanFromDate)">
AND TO_DATE(AA.RES_PLAN_DATE, 'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_resPlanFromDate}, 'YYYY-MM-DD')
</if>
<if test="search_resPlanToDate != null and !''.equals(search_resPlanToDate)">
AND TO_DATE(AA.RES_PLAN_DATE, 'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_resPlanToDate}, 'YYYY-MM-DD')
</if>
</select>
<!-- //jmpark end -->
<!-- hwangeuidon start -->
<!-- 프로젝트별 Task 진행현황 -->
<select id="getProjectTaskProgress">
SELECT
WBS_TASK.*
FROM
(
SELECT
TARGET_OBJID,
<!-- Task 전체 -->
COUNT(1) AS TASK_TOTAL_COUNT,
<!-- 완료 Task -->
COUNT(DECODE(TASK.STATUS,'COMPLETE',1)) AS TASK_COMPLETE_COUNT
FROM PMS_WBS_TASK TASK WHERE UPPER(TASK_TYPE) = 'TASK'
GROUP BY TARGET_OBJID
)WBS_TASK,
PMS_PJT_INFO PJT
WHERE 1=1
AND UPPER(PJT.STATUS) = 'CONFIRM'
AND PJT.OBJID(+)=WBS_TASK.TARGET_OBJID
</select>
<!-- 개발마스터 목록을 가져온다. -->
<select id="getDevMasterList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY PART_MST.SOP_DATE DESC NULLS LAST) AS RNUM
,DEV_MST.OBJID
,DEV_MST.TARGET_OBJID
,DEV_MST.ASSAY_PART_NO
,PART_MST.OEM_NAME
,PART_MST.CAR_NAME
,PART_MST.CAR_CODE
,PART_MST.PRODUCT_GROUP_NAME
,PART_MST.PRODUCT_NAME
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = DEV_MST.WRITER) AS DEPT_NAME
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = DEV_MST.WRITER) AS USER_NAME
,DEV_MST.REGDATE
,TO_CHAR(DEV_MST.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE
,(SELECT COUNT(WBS_TASK.OBJID) AS TASK_CNT FROM PMS_WBS_TASK WBS_TASK,PMS_REL_WBS_TASK_FNC_TASK REL WHERE REL.TARGET_OBJID = WBS_TASK.OBJID AND REL.SUB_OBJID = DEV_MST.OBJID) AS REL_TASK_CNT
,PART_MST.SOP_DATE
FROM PMS_DEV_MASTER DEV_MST,
(
SELECT
PART_MST.OBJID
,PART_MST.OEM_OBJID
,(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = PART_MST.OEM_OBJID) AS OEM_NAME
,PART_MST.CAR_OBJID
,(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PART_MST.CAR_OBJID) AS CAR_CODE
,(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = PART_MST.CAR_OBJID) AS CAR_NAME
,PART_MST.PROD_GROUP_OBJID
,(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PART_MST.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME
,PART_MST.PROD_OBJID
,(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PART_MST.PROD_OBJID) AS PRODUCT_NAME
,(SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) AND CAR_OBJID = PART_MST.CAR_OBJID) AS SOP_DATE
FROM PMS_PART_MASTER PART_MST
) PART_MST
WHERE 1=1
AND PART_MST.OBJID(+)=DEV_MST.TARGET_OBJID
</select>
<!-- 개발마스터에 해당하는 제품의 목록을 가져온다. -->
<select id="getDevMasterProductList" parameterType="map" resultType="map">
SELECT
OBJID,
PRODUCT_NAME,
STATUS
FROM PRODUCT_MNG PROD WHERE 1=1
AND EXISTS (SELECT PROD_OBJID FROM PMS_DEV_MASTER DEV WHERE PROD.OBJID = DEV.PROD_OBJID)
</select>
<!-- 개발마스터 금형등급별 분포도 Pie chart -->
<select id="getDevMasterRatingDistributePie" parameterType="map" resultType="map">
SELECT
ROUND(((NVL((SUM(RATE_A_UQ_CNT)),0)/DECODE(NVL(SUM(RATE_A_UQ_CNT+RATE_A_CO_CNT),1),0,1,NVL(SUM(RATE_A_UQ_CNT+RATE_A_CO_CNT),1))))*100,1) AS A_UQ_SUM_RATIO,
ROUND(((NVL((SUM(RATE_A_CO_CNT)),0)/DECODE(NVL(SUM(RATE_A_UQ_CNT+RATE_A_CO_CNT),1),0,1,NVL(SUM(RATE_A_UQ_CNT+RATE_A_CO_CNT),1))))*100,1) AS A_CO_SUM_RATIO,
ROUND(((NVL((SUM(RATE_B_UQ_CNT)),0)/DECODE(NVL(SUM(RATE_B_UQ_CNT+RATE_B_CO_CNT),1),0,1,NVL(SUM(RATE_B_UQ_CNT+RATE_B_CO_CNT),1))))*100,1) AS B_UQ_SUM_RATIO,
ROUND(((NVL((SUM(RATE_B_CO_CNT)),0)/DECODE(NVL(SUM(RATE_B_UQ_CNT+RATE_B_CO_CNT),1),0,1,NVL(SUM(RATE_B_UQ_CNT+RATE_B_CO_CNT),1))))*100,1) AS B_CO_SUM_RATIO,
ROUND(((NVL((SUM(RATE_C_UQ_CNT)),0)/DECODE(NVL(SUM(RATE_C_UQ_CNT+RATE_C_CO_CNT),1),0,1,NVL(SUM(RATE_C_UQ_CNT+RATE_C_CO_CNT),1))))*100,1) AS C_UQ_SUM_RATIO,
ROUND(((NVL((SUM(RATE_C_CO_CNT)),0)/DECODE(NVL(SUM(RATE_C_UQ_CNT+RATE_C_CO_CNT),1),0,1,NVL(SUM(RATE_C_UQ_CNT+RATE_C_CO_CNT),1))))*100,1) AS C_CO_SUM_RATIO,
ROUND(((NVL((SUM(RATE_A_UQ_CNT)+SUM(RATE_A_CO_CNT)),0)/DECODE(NVL(SUM(RATE_TOTAL_UQ_CNT+RATE_TOTAL_CO_CNT),1),0,1,NVL(SUM(RATE_TOTAL_UQ_CNT+RATE_TOTAL_CO_CNT),1))))*100,1) AS A_SUM_RATIO,
ROUND(((NVL((SUM(RATE_B_UQ_CNT)+SUM(RATE_B_CO_CNT)),0)/DECODE(NVL(SUM(RATE_TOTAL_UQ_CNT+RATE_TOTAL_CO_CNT),1),0,1,NVL(SUM(RATE_TOTAL_UQ_CNT+RATE_TOTAL_CO_CNT),1))))*100,1) AS B_SUM_RATIO,
ROUND(((NVL((SUM(RATE_C_UQ_CNT)+SUM(RATE_C_CO_CNT)),0)/DECODE(NVL(SUM(RATE_TOTAL_UQ_CNT+RATE_TOTAL_CO_CNT),1),0,1,NVL(SUM(RATE_TOTAL_UQ_CNT+RATE_TOTAL_CO_CNT),1))))*100,1) AS C_SUM_RATIO
FROM (
SELECT
PART.PRODUCT_NAME,
INFO.RATE,
INFO.COMMON_TYPE,
CASE WHEN UPPER(INFO.RATE) = 'A' AND UPPER(INFO.COMMON_TYPE) = 'UQ' THEN 1 ELSE 0 END AS RATE_A_UQ_CNT,
CASE WHEN UPPER(INFO.RATE) = 'A' AND UPPER(INFO.COMMON_TYPE) = 'CO' THEN 1 ELSE 0 END AS RATE_A_CO_CNT,
CASE WHEN UPPER(INFO.RATE) = 'B' AND UPPER(INFO.COMMON_TYPE) = 'UQ' THEN 1 ELSE 0 END AS RATE_B_UQ_CNT,
CASE WHEN UPPER(INFO.RATE) = 'B' AND UPPER(INFO.COMMON_TYPE) = 'CO' THEN 1 ELSE 0 END AS RATE_B_CO_CNT,
CASE WHEN UPPER(INFO.RATE) = 'C' AND UPPER(INFO.COMMON_TYPE) = 'UQ' THEN 1 ELSE 0 END AS RATE_C_UQ_CNT,
CASE WHEN UPPER(INFO.RATE) = 'C' AND UPPER(INFO.COMMON_TYPE) = 'CO' THEN 1 ELSE 0 END AS RATE_C_CO_CNT,
CASE WHEN UPPER(INFO.COMMON_TYPE) = 'UQ' THEN 1 ELSE 0 END AS RATE_TOTAL_UQ_CNT,
CASE WHEN UPPER(INFO.COMMON_TYPE) = 'CO' THEN 1 ELSE 0 END AS RATE_TOTAL_CO_CNT
FROM
(
SELECT * FROM(
SELECT
ROW_NUMBER() OVER(PARTITION BY INFO.PART_NO ORDER BY INFO.DEV_POINT DESC) RNUM,
INFO.RATE,
INFO.COMMON_TYPE,
INFO.DEV_POINT,
INFO.PART_NO,
INFO.TARGET_OBJID
FROM PMS_DEV_MASTER_REL_PART_INFO INFO WHERE INFO.RATE IS NOT NULL AND INFO.COMMON_TYPE IS NOT NULL
<if test="devMasterObjId != null and !''.equals(devMasterObjId)">
AND INFO.TARGET_OBJID = #{devMasterObjId}
</if>
)WHERE RNUM = 1
) INFO,
(
SELECT
PART.OBJID,
PART.OEM_OBJID,
PART.CAR_OBJID,
PART.PRODUCT_GROUP_OBJID,
PART.PRODUCT_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PART.PRODUCT_GROUP_OBJID) PRODUCT_GROUP_NAME,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PART.PRODUCT_OBJID) PRODUCT_NAME,
PART.PART_NO,
PART.RH_PART_OBJID,
(SELECT PART_NO FROM PART_INFO WHERE OBJID = PART.RH_PART_OBJID) RH_PART_NO,
PART.RH_PART_NO RH_PART_NO_ORG,
PART.PART_NAME,
PART.PART_TYPE,
NVL2(PART.IS_START_DEV_PART,PART.IS_START_DEV_PART,'1') IS_START_DEV_PART,
PART.IS_LAST
FROM PART_INFO PART
)PART
WHERE 1=1
AND PART.IS_LAST = 1
AND PART.IS_START_DEV_PART = 1
AND PART.PART_NO(+)= INFO.PART_NO
<if test="productObjId != null and !''.equals(productObjId)">
AND PART.PRODUCT_OBJID = #{productObjId}
</if>
)
</select>
<!-- 개발마스터 단품별 금형등급별 분포현황 -->
<select id="getDevMasterRatingDistributeGrid" parameterType="map" resultType="map">
SELECT
PRODUCT_NAME,
<!-- 제품별 A등급 U/Q count -->
SUM(RATE_A_UQ_CNT) AS A_UQ_CNT,
<!-- 제품별 A등급 C/O count -->
SUM(RATE_A_CO_CNT) AS A_CO_CNT,
<!-- 제품별 A등급 전체 count -->
(SUM(RATE_A_UQ_CNT)+SUM(RATE_A_CO_CNT)) AS A_TOTAL_CNT,
<!-- 제품별 B등급 U/Q count -->
SUM(RATE_B_UQ_CNT) AS B_UQ_CNT,
<!-- 제품별 B등급 C/O count -->
SUM(RATE_B_CO_CNT) AS B_CO_CNT,
<!-- 제품별 B등급 전체 count -->
(SUM(RATE_B_UQ_CNT)+SUM(RATE_B_CO_CNT)) AS B_TOTAL_CNT,
<!-- 제품별 C등급 U/Q count -->
SUM(RATE_C_UQ_CNT) AS C_UQ_CNT,
<!-- 제품별 C등급 C/O count -->
SUM(RATE_C_CO_CNT) AS C_CO_CNT,
<!-- 제품별 C등급 전체 count -->
(SUM(RATE_C_UQ_CNT)+SUM(RATE_C_CO_CNT)) AS C_TOTAL_CNT,
<!-- 제품별 U/Q 전체 count -->
SUM(RATE_TOTAL_UQ_CNT) AS PRODUCT_TOTAL_UQ_CNT,
<!-- 제품별 C/O 전체 count -->
SUM(RATE_TOTAL_CO_CNT) AS PRODUCT_TOTAL_CO_CNT,
<!-- 제품별 전체 count -->
(SUM(RATE_TOTAL_CO_CNT) + SUM(RATE_TOTAL_UQ_CNT)) AS PRODUCT_TOTAL_CNT
FROM (
SELECT
PART.PRODUCT_NAME,
INFO.RATE,
INFO.COMMON_TYPE,
CASE WHEN UPPER(RATE) = 'A' AND UPPER(COMMON_TYPE) = 'UQ' THEN 1 ELSE 0 END AS RATE_A_UQ_CNT,
CASE WHEN UPPER(RATE) = 'A' AND UPPER(COMMON_TYPE) = 'CO' THEN 1 ELSE 0 END AS RATE_A_CO_CNT,
CASE WHEN UPPER(RATE) = 'B' AND UPPER(COMMON_TYPE) = 'UQ' THEN 1 ELSE 0 END AS RATE_B_UQ_CNT,
CASE WHEN UPPER(RATE) = 'B' AND UPPER(COMMON_TYPE) = 'CO' THEN 1 ELSE 0 END AS RATE_B_CO_CNT,
CASE WHEN UPPER(RATE) = 'C' AND UPPER(COMMON_TYPE) = 'UQ' THEN 1 ELSE 0 END AS RATE_C_UQ_CNT,
CASE WHEN UPPER(RATE) = 'C' AND UPPER(COMMON_TYPE) = 'CO' THEN 1 ELSE 0 END AS RATE_C_CO_CNT,
CASE WHEN UPPER(COMMON_TYPE) = 'UQ' THEN 1 ELSE 0 END AS RATE_TOTAL_UQ_CNT,
CASE WHEN UPPER(COMMON_TYPE) = 'CO' THEN 1 ELSE 0 END AS RATE_TOTAL_CO_CNT
FROM
(
SELECT * FROM(
SELECT
ROW_NUMBER() OVER(PARTITION BY INFO.PART_NO ORDER BY INFO.DEV_POINT DESC) RNUM,
INFO.RATE,
INFO.COMMON_TYPE,
INFO.DEV_POINT,
INFO.PART_NO
FROM PMS_DEV_MASTER_REL_PART_INFO INFO WHERE INFO.RATE IS NOT NULL AND INFO.COMMON_TYPE IS NOT NULL
)WHERE RNUM = 1
) INFO,
(
SELECT
PART.OBJID,
PART.OEM_OBJID,
PART.CAR_OBJID,
PART.PRODUCT_GROUP_OBJID,
PART.PRODUCT_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PART.PRODUCT_GROUP_OBJID) PRODUCT_GROUP_NAME,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PART.PRODUCT_OBJID) PRODUCT_NAME,
PART.PART_NO,
PART.RH_PART_OBJID,
(SELECT PART_NO FROM PART_INFO WHERE OBJID = PART.RH_PART_OBJID) RH_PART_NO,
PART.RH_PART_NO RH_PART_NO_ORG,
PART.PART_NAME,
PART.PART_TYPE,
NVL2(PART.IS_START_DEV_PART,PART.IS_START_DEV_PART,'1') IS_START_DEV_PART,
PART.IS_LAST
FROM PART_INFO PART
)PART
WHERE 1=1
AND PART.IS_LAST = 1
AND PART.IS_START_DEV_PART = 1
AND PART.PART_NO(+)= INFO.PART_NO
) GROUP BY PRODUCT_NAME
</select>
<!-- 문제점 관리현황 고객사별 차종 스택 그래프 -->
<select id="getProblemStatusStackColumn" parameterType="map" resultType="map">
SELECT
PROBLEM.*,
ROUND(((NVL(PROBLEM.COMPLETE_CNT,0)/DECODE(NVL(PROBLEM.TOTAL_PROBLEM_CNT,1),0,1,NVL(PROBLEM.TOTAL_PROBLEM_CNT,1))))*100,1) AS COMPLETE_RATIO
FROM(
SELECT
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_CODE,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS OEM_OBJID,
CAR_OBJID,
SOP_DATE,
COUNT(1) AS TOTAL_PROBLEM_CNT,
COUNT(CASE WHEN UPPER(STATUS) = 'COMPLETE' THEN 1 ELSE NULL END) AS COMPLETE_CNT,
COUNT(CASE WHEN UPPER(STATUS) != 'COMPLETE' THEN 1 ELSE NULL END) AS NOT_COMPLETE_CNT
FROM(
SELECT
PROBLEM.OBJID,
PROBLEM.TARGET_OBJID,
PROBLEM.STATUS,
(SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) AND CAR_OBJID = PROBLEM_GROUP.CAR_OBJID) AS SOP_DATE,
PROBLEM_GROUP.OEM_OBJID,
PROBLEM_GROUP.CAR_OBJID,
PROBLEM_GROUP.CAR_CODE,
PROBLEM_GROUP.PROD_OBJID
FROM
PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID,
PROBLEM_GROUP.REGION,
PROBLEM_GROUP.STEP1,
PROBLEM_GROUP.STEP2,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS OEM_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS CAR_CODE,
PROBLEM_GROUP.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROBLEM_GROUP.PROD_OBJID) AS PROD_GROUP_OBJID,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STATUS
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)PROBLEM_GROUP
WHERE PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
) GROUP BY CAR_OBJID,SOP_DATE ORDER BY SOP_DATE DESC NULLS LAST
)PROBLEM WHERE 1=1
<if test="oemObjId != null and !''.equals(oemObjId)">
AND PROBLEM.OEM_OBJID = #{oemObjId}
</if>
</select>
<!-- 문제점 관리현황 고객사별 차종 RollUp 목록 -->
<select id="getProblemStatusRollUpList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY OEM_OBJID NULLS FIRST,(SELECT MILESTONE_DATE FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1) AND CAR_OBJID = PROBLEM.CAR_OBJID) DESC NULLS LAST) AS RNUM,
PROBLEM.*
FROM(
SELECT
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_CODE,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS OEM_OBJID,
CAR_OBJID,
SUM(TOTAL_PROBLEM_CNT) AS SUM_TOTAL_PROBLEM_CNT,
SUM(COMPLETE_CNT) AS SUM_COMPLETE_CNT,
SUM(NOT_COMPLETE_CNT) AS SUM_NOT_COMPLETE_CNT,
CASE WHEN SUM(TOTAL_PROBLEM_CNT) = 0 THEN 0 ELSE ROUND((SUM(COMPLETE_CNT) / SUM(TOTAL_PROBLEM_CNT))*100, 1) END AS COMPLETE_RATIO
FROM(
SELECT
PROBLEM.OBJID,
PROBLEM.TARGET_OBJID,
PROBLEM.STATUS,
PROBLEM_GROUP.OEM_OBJID,
PROBLEM_GROUP.CAR_OBJID,
PROBLEM_GROUP.CAR_CODE,
PROBLEM_GROUP.PROD_OBJID,
1 AS TOTAL_PROBLEM_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) = 'COMPLETE' THEN 1 ELSE 0 END AS COMPLETE_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) != 'COMPLETE' THEN 1 ELSE 0 END AS NOT_COMPLETE_CNT
FROM
PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID,
PROBLEM_GROUP.REGION,
PROBLEM_GROUP.STEP1,
PROBLEM_GROUP.STEP2,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS OEM_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS CAR_CODE,
PROBLEM_GROUP.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROBLEM_GROUP.PROD_OBJID) AS PROD_GROUP_OBJID,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STATUS
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)PROBLEM_GROUP
WHERE PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
<if test="oemObjId != null and !''.equals(oemObjId)">
AND PROBLEM_GROUP.OEM_OBJID = #{oemObjId}
</if>
) GROUP BY ROLLUP(CAR_OBJID) ORDER BY CAR_OBJID DESC
)PROBLEM
</select>
<!-- 문제점 관리현황 고객사별 차종 step2 Pie chart -->
<select id="getCarProblemStepPieChart" parameterType="map" resultType="map">
SELECT
STEP1,
STEP2,
TOTAL_PROBLEM_CNT,
COMPLETE_CNT,
NOT_COMPLETE_CNT,
ROUND(STEP2_PROBLEM_RATIO*100) AS STEP2_PROBLEM_RATIO,
COMPLETE_RATIO,
NOT_COMPLETE_RATIO
FROM(
SELECT
STEP1,
STEP2,
SUM(PROBLEM_CNT) AS TOTAL_PROBLEM_CNT,
SUM(COMPLETE_CNT) AS COMPLETE_CNT,
SUM(NOT_COMPLETE_CNT) AS NOT_COMPLETE_CNT,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE ROUND(SUM(COMPLETE_CNT)/SUM(PROBLEM_CNT)*100,1) END AS COMPLETE_RATIO,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE ROUND(SUM(NOT_COMPLETE_CNT)/SUM(PROBLEM_CNT)*100,1) END AS NOT_COMPLETE_RATIO,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE RATIO_TO_REPORT(SUM(PROBLEM_CNT)) OVER() END AS STEP2_PROBLEM_RATIO
FROM(
SELECT
PROBLEM.OBJID,
PROBLEM.TARGET_OBJID,
PROBLEM.STATUS,
PROBLEM_GROUP.OEM_OBJID,
PROBLEM_GROUP.CAR_OBJID,
PROBLEM_GROUP.CAR_CODE,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STEP1,
PROBLEM_GROUP.STEP2,
1 AS PROBLEM_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) = 'COMPLETE' THEN 1 ELSE 0 END AS COMPLETE_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) != 'COMPLETE' THEN 1 ELSE 0 END AS NOT_COMPLETE_CNT
FROM
PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID,
PROBLEM_GROUP.REGION,
PROBLEM_GROUP.STEP1,
PROBLEM_GROUP.STEP2,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS OEM_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS CAR_CODE,
PROBLEM_GROUP.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROBLEM_GROUP.PROD_OBJID) AS PROD_GROUP_OBJID,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STATUS
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)PROBLEM_GROUP
WHERE PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
<if test="carObjId != null and !''.equals(carObjId)">
AND PROBLEM_GROUP.CAR_OBJID = #{carObjId}
</if>
) GROUP BY (STEP1,STEP2) ORDER BY STEP2 DESC
)
</select>
<!-- 문제점 관리현황 차종별 단계 List -->
<select id="getCarProblemStepRollUpList" parameterType="map" resultType="map">
SELECT
STEP1,
STEP2,
SUM(PROBLEM_CNT) AS TOTAL_PROBLEM_CNT,
SUM(COMPLETE_CNT) AS COMPLETE_CNT,
SUM(NOT_COMPLETE_CNT) AS NOT_COMPLETE_CNT
FROM(
SELECT
PROBLEM.OBJID,
PROBLEM.TARGET_OBJID,
PROBLEM.STATUS,
PROBLEM_GROUP.OEM_OBJID,
PROBLEM_GROUP.CAR_OBJID,
PROBLEM_GROUP.CAR_CODE,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STEP1,
PROBLEM_GROUP.STEP2,
1 AS PROBLEM_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) = 'COMPLETE' THEN 1 ELSE 0 END AS COMPLETE_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) != 'COMPLETE' THEN 1 ELSE 0 END AS NOT_COMPLETE_CNT
FROM PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID,
PROBLEM_GROUP.REGION,
PROBLEM_GROUP.STEP1,
PROBLEM_GROUP.STEP2,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS OEM_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS CAR_CODE,
PROBLEM_GROUP.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROBLEM_GROUP.PROD_OBJID) AS PROD_GROUP_OBJID,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STATUS
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)PROBLEM_GROUP
WHERE PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
<if test="carObjId != null and !''.equals(carObjId)">
AND PROBLEM_GROUP.CAR_OBJID = #{carObjId}
</if>
)GROUP BY ROLLUP((STEP1,STEP2)) ORDER BY STEP2 DESC
</select>
<!-- 문제점 유형별 발생현황 list -->
<select id="getProblemTypeStatusRollUpList" parameterType="map" resultType="map">
SELECT
PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PROD_NAME,
SUM(DESIGN_STRUCTURE_CNT) AS DESIGN_STRUCTURE_CNT,
SUM(DESIGN_DATA_ERROR_CNT) AS DESIGN_DATA_ERROR_CNT,
SUM(DESIGN_PRODUCTIVITY_CNT) AS DESIGN_PRODUCTIVITY_CNT,
SUM(DESIGN_ASSEMBLABILITY_CNT) AS DESIGN_ASSEMBLABILITY_CNT,
SUM(DESIGN_FORMABILITY_CNT) AS DESIGN_FORMABILITY_CNT,
SUM(DESIGN_EO_CNT) AS DESIGN_EO_CNT,
SUM(MOLD_EXTERIOR_CNT) AS MOLD_EXTERIOR_CNT,
SUM(MOLD_SAFETY_CNT) AS MOLD_SAFETY_CNT,
SUM(MOLD_MANIFESTATION_CNT) AS MOLD_MANIFESTATION_CNT,
SUM(MOLD_ASSEMBLY_CNT) AS MOLD_ASSEMBLY_CNT,
SUM(MOLD_SLIDING_CNT) AS MOLD_SLIDING_CNT,
SUM(MOLD_SETTING_CNT) AS MOLD_SETTING_CNT,
SUM(MOLD_CONSERVATIVE_CNT) AS MOLD_CONSERVATIVE_CNT,
SUM(MOLD_DURABILITY_CNT) AS MOLD_DURABILITY_CNT,
SUM(MOLD_PRODUCTIVITY_CNT) AS MOLD_PRODUCTIVITY_CNT,
SUM(QUALITY_DEGREE_CNT) AS QUALITY_DEGREE_CNT,
SUM(QUALITY_EXTERIOR_CNT) AS QUALITY_EXTERIOR_CNT,
SUM(QUALITY_EO_CNT) AS QUALITY_EO_CNT,
SUM(QUALITY_DESIGN_CNT) AS QUALITY_DESIGN_CNT,
SUM(QUALITY_WELDING_CNT) AS QUALITY_WELDING_CNT,
SUM(QUALITY_TOOL_CNT) AS QUALITY_TOOL_CNT,
SUM(QUALITY_WORKER_CNT) AS QUALITY_WORKER_CNT,
SUM(QUALITY_ETC_CNT) AS QUALITY_ETC_CNT,
SUM(FACILITIES_JIG_CNT) AS FACILITIES_JIG_CNT,
SUM(FACILITIES_WELDING_CNT) AS FACILITIES_WELDING_CNT,
SUM(FACILITIES_INTEGRITY_CNT) AS FACILITIES_INTEGRITY_CNT,
SUM(FACILITIES_QUALITY_CNT) AS FACILITIES_QUALITY_CNT,
SUM(FACILITIES_FORMABILITY_CNT) AS FACILITIES_FORMABILITY_CNT,
SUM(FACILITIES_SAFETY_CNT) AS FACILITIES_SAFETY_CNT,
SUM(FACILITIES_WORKABILITY_CNT) AS FACILITIES_WORKABILITY_CNT
FROM(
SELECT
PROBLEM.OBJID,
PROBLEM.TARGET_OBJID,
PROBLEM.STATUS,
PROBLEM_GROUP.OEM_OBJID,
PROBLEM_GROUP.CAR_OBJID,
PROBLEM_GROUP.CAR_CODE,
PROBLEM_GROUP.PROD_OBJID,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '구조' THEN 1 ELSE 0 END AS DESIGN_STRUCTURE_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'DESIGN' AND PROBLEM.TYPE2 = 'Data오류' THEN 1 ELSE 0 END AS DESIGN_DATA_ERROR_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'DESIGN' AND PROBLEM.TYPE2 = '생산성' THEN 1 ELSE 0 END AS DESIGN_PRODUCTIVITY_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'DESIGN' AND PROBLEM.TYPE2 = '조립성' THEN 1 ELSE 0 END AS DESIGN_ASSEMBLABILITY_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'DESIGN' AND PROBLEM.TYPE2 = '생산성' THEN 1 ELSE 0 END AS DESIGN_FORMABILITY_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'DESIGN' AND PROBLEM.TYPE2 = 'EO' THEN 1 ELSE 0 END AS DESIGN_EO_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'MOLD' AND PROBLEM.TYPE2 = '외관' THEN 1 ELSE 0 END AS MOLD_EXTERIOR_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'MOLD' AND PROBLEM.TYPE2 = '안전' THEN 1 ELSE 0 END AS MOLD_SAFETY_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'MOLD' AND PROBLEM.TYPE2 = '표명_인부' THEN 1 ELSE 0 END AS MOLD_MANIFESTATION_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'MOLD' AND PROBLEM.TYPE2 = '조립' THEN 1 ELSE 0 END AS MOLD_ASSEMBLY_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'MOLD' AND PROBLEM.TYPE2 = '습동' THEN 1 ELSE 0 END AS MOLD_SLIDING_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'MOLD' AND PROBLEM.TYPE2 = '셋팅' THEN 1 ELSE 0 END AS MOLD_SETTING_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'MOLD' AND PROBLEM.TYPE2 = '보수성' THEN 1 ELSE 0 END AS MOLD_CONSERVATIVE_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'MOLD' AND PROBLEM.TYPE2 = '내구성' THEN 1 ELSE 0 END AS MOLD_DURABILITY_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'MOLD' AND PROBLEM.TYPE2 = '생산성' THEN 1 ELSE 0 END AS MOLD_PRODUCTIVITY_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'QUALITY' AND PROBLEM.TYPE2 = '정도' THEN 1 ELSE 0 END AS QUALITY_DEGREE_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'QUALITY' AND PROBLEM.TYPE2 = '외관' THEN 1 ELSE 0 END AS QUALITY_EXTERIOR_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'QUALITY' AND PROBLEM.TYPE2 = 'EO' THEN 1 ELSE 0 END AS QUALITY_EO_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'QUALITY' AND PROBLEM.TYPE2 = '설계' THEN 1 ELSE 0 END AS QUALITY_DESIGN_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'QUALITY' AND PROBLEM.TYPE2 = '용접' THEN 1 ELSE 0 END AS QUALITY_WELDING_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'QUALITY' AND PROBLEM.TYPE2 = 'Tool' THEN 1 ELSE 0 END AS QUALITY_TOOL_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'QUALITY' AND PROBLEM.TYPE2 = '작업자' THEN 1 ELSE 0 END AS QUALITY_WORKER_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'QUALITY' AND PROBLEM.TYPE2 = '기타' THEN 1 ELSE 0 END AS QUALITY_ETC_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'FACILITIES' AND PROBLEM.TYPE2 = '지그' THEN 1 ELSE 0 END AS FACILITIES_JIG_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'FACILITIES' AND PROBLEM.TYPE2 = '용접' THEN 1 ELSE 0 END AS FACILITIES_WELDING_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'FACILITIES' AND PROBLEM.TYPE2 = '보전성' THEN 1 ELSE 0 END AS FACILITIES_INTEGRITY_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'FACILITIES' AND PROBLEM.TYPE2 = '품질' THEN 1 ELSE 0 END AS FACILITIES_QUALITY_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'FACILITIES' AND PROBLEM.TYPE2 = '생산성' THEN 1 ELSE 0 END AS FACILITIES_FORMABILITY_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'FACILITIES' AND PROBLEM.TYPE2 = '안전' THEN 1 ELSE 0 END AS FACILITIES_SAFETY_CNT,
CASE WHEN UPPER(PROBLEM.type1) = 'FACILITIES' AND PROBLEM.TYPE2 = '작업성' THEN 1 ELSE 0 END AS FACILITIES_WORKABILITY_CNT
FROM
PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID,
PROBLEM_GROUP.REGION,
PROBLEM_GROUP.STEP1,
PROBLEM_GROUP.STEP2,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS OEM_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS CAR_CODE,
PROBLEM_GROUP.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROBLEM_GROUP.PROD_OBJID) AS PROD_GROUP_OBJID,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STATUS
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)PROBLEM_GROUP
WHERE PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
<if test="carObjId != null and !''.equals(carObjId)">
AND PROBLEM_GROUP.CAR_OBJID = #{carObjId}
</if>
<if test="productObjId != null and !''.equals(productObjId)">
AND PROBLEM_GROUP.PROD_OBJID = #{productObjId}
</if>
)GROUP BY ROLLUP(PROD_OBJID)
</select>
<!-- 문제점 유형별 발생현황 Pie Chart(금형,설비,품질,설계) -->
<select id="getProblemTypeStatusPie" parameterType="map" resultType="map">
SELECT
SUM(DESIGN_STRUCTURE_CNT) AS DESIGN_STRUCTURE_CNT,
CASE WHEN SUM(DESIGN_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(DESIGN_STRUCTURE_CNT) / SUM(DESIGN_TOTAL_CNT))*100, 1) END AS DESIGN_STRUCTURE_RATIO,
SUM(DESIGN_DATA_ERROR_CNT) AS DESIGN_DATA_ERROR_CNT,
CASE WHEN SUM(DESIGN_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(DESIGN_DATA_ERROR_CNT) / SUM(DESIGN_TOTAL_CNT))*100, 1) END AS DESIGN_DATA_ERROR_RATIO,
SUM(DESIGN_PRODUCTIVITY_CNT) AS DESIGN_PRODUCTIVITY_CNT,
CASE WHEN SUM(DESIGN_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(DESIGN_PRODUCTIVITY_CNT) / SUM(DESIGN_TOTAL_CNT))*100, 1) END AS DESIGN_PRODUCTIVITY_RATIO,
SUM(DESIGN_ASSEMBLABILITY_CNT) AS DESIGN_ASSEMBLABILITY_CNT,
CASE WHEN SUM(DESIGN_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(DESIGN_ASSEMBLABILITY_CNT) / SUM(DESIGN_TOTAL_CNT))*100, 1) END AS DESIGN_ASSEMBLABILITY_RATIO,
SUM(DESIGN_FORMABILITY_CNT) AS DESIGN_FORMABILITY_CNT,
CASE WHEN SUM(DESIGN_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(DESIGN_FORMABILITY_CNT) / SUM(DESIGN_TOTAL_CNT))*100, 1) END AS DESIGN_FORMABILITY_RATIO,
SUM(DESIGN_EO_CNT) AS DESIGN_EO_CNT,
CASE WHEN SUM(DESIGN_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(DESIGN_EO_CNT) / SUM(DESIGN_TOTAL_CNT))*100, 1) END AS DESIGN_EO_RATIO,
SUM(DESIGN_TOTAL_CNT) AS DESIGN_TOTAL_CNT,
SUM(MOLD_EXTERIOR_CNT) AS MOLD_EXTERIOR_CNT,
CASE WHEN SUM(MOLD_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(MOLD_EXTERIOR_CNT) / SUM(MOLD_TOTAL_CNT))*100, 1) END AS MOLD_EXTERIOR_RATIO,
SUM(MOLD_SAFETY_CNT) AS MOLD_SAFETY_CNT,
CASE WHEN SUM(MOLD_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(MOLD_SAFETY_CNT) / SUM(MOLD_TOTAL_CNT))*100, 1) END AS MOLD_SAFETY_RATIO,
SUM(MOLD_MANIFESTATION_CNT) AS MOLD_MANIFESTATION_CNT,
CASE WHEN SUM(MOLD_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(MOLD_MANIFESTATION_CNT) / SUM(MOLD_TOTAL_CNT))*100, 1) END AS MOLD_MANIFESTATION_RATIO,
SUM(MOLD_ASSEMBLY_CNT) AS MOLD_ASSEMBLY_CNT,
CASE WHEN SUM(MOLD_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(MOLD_ASSEMBLY_CNT) / SUM(MOLD_TOTAL_CNT))*100, 1) END AS MOLD_ASSEMBLY_RATIO,
SUM(MOLD_SLIDING_CNT) AS MOLD_SLIDING_CNT,
CASE WHEN SUM(MOLD_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(MOLD_SLIDING_CNT) / SUM(MOLD_TOTAL_CNT))*100, 1) END AS MOLD_SLIDING_RATIO,
SUM(MOLD_SETTING_CNT) AS MOLD_SETTING_CNT,
CASE WHEN SUM(MOLD_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(MOLD_SETTING_CNT) / SUM(MOLD_TOTAL_CNT))*100, 1) END AS MOLD_SETTING_RATIO,
SUM(MOLD_CONSERVATIVE_CNT) AS MOLD_CONSERVATIVE_CNT,
CASE WHEN SUM(MOLD_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(MOLD_CONSERVATIVE_CNT) / SUM(MOLD_TOTAL_CNT))*100, 1) END AS MOLD_CONSERVATIVE_RATIO,
SUM(MOLD_DURABILITY_CNT) AS MOLD_DURABILITY_CNT,
CASE WHEN SUM(MOLD_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(MOLD_DURABILITY_CNT) / SUM(MOLD_TOTAL_CNT))*100, 1) END AS MOLD_DURABILITY_RATIO,
SUM(MOLD_PRODUCTIVITY_CNT) AS MOLD_PRODUCTIVITY_CNT,
CASE WHEN SUM(MOLD_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(MOLD_PRODUCTIVITY_CNT) / SUM(MOLD_TOTAL_CNT))*100, 1) END AS MOLD_PRODUCTIVITY_RATIO,
SUM(MOLD_TOTAL_CNT) AS MOLD_TOTAL_CNT,
SUM(QUALITY_DEGREE_CNT) AS QUALITY_DEGREE_CNT,
CASE WHEN SUM(QUALITY_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(QUALITY_DEGREE_CNT) / SUM(QUALITY_TOTAL_CNT))*100, 1) END AS QUALITY_DEGREE_RATIO,
SUM(QUALITY_EXTERIOR_CNT) AS QUALITY_EXTERIOR_CNT,
CASE WHEN SUM(QUALITY_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(QUALITY_EXTERIOR_CNT) / SUM(QUALITY_TOTAL_CNT))*100, 1) END AS QUALITY_EXTERIOR_RATIO,
SUM(QUALITY_EO_CNT) AS QUALITY_EO_CNT,
CASE WHEN SUM(QUALITY_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(QUALITY_EO_CNT) / SUM(QUALITY_TOTAL_CNT))*100, 1) END AS QUALITY_EO_RATIO,
SUM(QUALITY_DESIGN_CNT) AS QUALITY_DESIGN_CNT,
CASE WHEN SUM(QUALITY_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(QUALITY_DESIGN_CNT) / SUM(QUALITY_TOTAL_CNT))*100, 1) END AS QUALITY_DESIGN_RATIO,
SUM(QUALITY_WELDING_CNT) AS QUALITY_WELDING_CNT,
CASE WHEN SUM(QUALITY_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(QUALITY_WELDING_CNT) / SUM(QUALITY_TOTAL_CNT))*100, 1) END AS QUALITY_WELDING_RATIO,
SUM(QUALITY_TOOL_CNT) AS QUALITY_TOOL_CNT,
CASE WHEN SUM(QUALITY_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(QUALITY_TOOL_CNT) / SUM(QUALITY_TOTAL_CNT))*100, 1) END AS QUALITY_TOOL_RATIO,
SUM(QUALITY_WORKER_CNT) AS QUALITY_WORKER_CNT,
CASE WHEN SUM(QUALITY_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(QUALITY_WORKER_CNT) / SUM(QUALITY_TOTAL_CNT))*100, 1) END AS QUALITY_WORKER_RATIO,
SUM(QUALITY_ETC_CNT) AS QUALITY_ETC_CNT,
CASE WHEN SUM(QUALITY_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(QUALITY_ETC_CNT) / SUM(QUALITY_TOTAL_CNT))*100, 1) END AS QUALITY_ETC_RATIO,
SUM(QUALITY_TOTAL_CNT) AS QUALITY_TOTAL_CNT,
SUM(FACILITIES_JIG_CNT) AS FACILITIES_JIG_CNT,
CASE WHEN SUM(FACILITIES_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(FACILITIES_JIG_CNT) / SUM(FACILITIES_TOTAL_CNT))*100, 1) END AS FACILITIES_JIG_RATIO,
SUM(FACILITIES_WELDING_CNT) AS FACILITIES_WELDING_CNT,
CASE WHEN SUM(FACILITIES_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(FACILITIES_WELDING_CNT) / SUM(FACILITIES_TOTAL_CNT))*100, 1) END AS FACILITIES_WELDING_RATIO,
SUM(FACILITIES_INTEGRITY_CNT) AS FACILITIES_INTEGRITY_CNT,
CASE WHEN SUM(FACILITIES_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(FACILITIES_INTEGRITY_CNT) / SUM(FACILITIES_TOTAL_CNT))*100, 1) END AS FACILITIES_INTEGRITY_RATIO,
SUM(FACILITIES_QUALITY_CNT) AS FACILITIES_QUALITY_CNT,
CASE WHEN SUM(FACILITIES_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(FACILITIES_QUALITY_CNT) / SUM(FACILITIES_TOTAL_CNT))*100, 1) END AS FACILITIES_QUALITY_RATIO,
SUM(FACILITIES_FORMABILITY_CNT) AS FACILITIES_FORMABILITY_CNT,
CASE WHEN SUM(FACILITIES_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(FACILITIES_FORMABILITY_CNT) / SUM(FACILITIES_TOTAL_CNT))*100, 1) END AS FACILITIES_FORMABILITY_RATIO,
SUM(FACILITIES_SAFETY_CNT) AS FACILITIES_SAFETY_CNT,
CASE WHEN SUM(FACILITIES_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(FACILITIES_SAFETY_CNT) / SUM(FACILITIES_TOTAL_CNT))*100, 1) END AS FACILITIES_SAFETY_RATIO,
SUM(FACILITIES_WORKABILITY_CNT) AS FACILITIES_WORKABILITY_CNT,
CASE WHEN SUM(FACILITIES_TOTAL_CNT) = 0 THEN 0 ELSE ROUND((SUM(FACILITIES_WORKABILITY_CNT) / SUM(FACILITIES_TOTAL_CNT))*100, 1) END AS FACILITIES_WORKABILITY_RATIO,
SUM(FACILITIES_TOTAL_CNT) AS FACILITIES_TOTAL_CNT
FROM(
SELECT
PROBLEM.OBJID,
PROBLEM.TARGET_OBJID,
PROBLEM.STATUS,
PROBLEM_GROUP.OEM_OBJID,
PROBLEM_GROUP.CAR_OBJID,
PROBLEM_GROUP.CAR_CODE,
PROBLEM_GROUP.PROD_OBJID,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '구조' THEN 1 ELSE 0 END AS DESIGN_STRUCTURE_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = 'Data오류' THEN 1 ELSE 0 END AS DESIGN_DATA_ERROR_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '생산성' THEN 1 ELSE 0 END AS DESIGN_PRODUCTIVITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '조립성' THEN 1 ELSE 0 END AS DESIGN_ASSEMBLABILITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '생산성' THEN 1 ELSE 0 END AS DESIGN_FORMABILITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = 'EO' THEN 1 ELSE 0 END AS DESIGN_EO_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' THEN 1 ELSE 0 END AS DESIGN_TOTAL_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '외관' THEN 1 ELSE 0 END AS MOLD_EXTERIOR_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '안전' THEN 1 ELSE 0 END AS MOLD_SAFETY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '표명_인부' THEN 1 ELSE 0 END AS MOLD_MANIFESTATION_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '조립' THEN 1 ELSE 0 END AS MOLD_ASSEMBLY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '습동' THEN 1 ELSE 0 END AS MOLD_SLIDING_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '셋팅' THEN 1 ELSE 0 END AS MOLD_SETTING_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '보수성' THEN 1 ELSE 0 END AS MOLD_CONSERVATIVE_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '내구성' THEN 1 ELSE 0 END AS MOLD_DURABILITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '생산성' THEN 1 ELSE 0 END AS MOLD_PRODUCTIVITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' THEN 1 ELSE 0 END AS MOLD_TOTAL_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'QUALITY' AND PROBLEM.TYPE2 = '정도' THEN 1 ELSE 0 END AS QUALITY_DEGREE_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'QUALITY' AND PROBLEM.TYPE2 = '외관' THEN 1 ELSE 0 END AS QUALITY_EXTERIOR_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'QUALITY' AND PROBLEM.TYPE2 = 'EO' THEN 1 ELSE 0 END AS QUALITY_EO_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'QUALITY' AND PROBLEM.TYPE2 = '설계' THEN 1 ELSE 0 END AS QUALITY_DESIGN_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'QUALITY' AND PROBLEM.TYPE2 = '용접' THEN 1 ELSE 0 END AS QUALITY_WELDING_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'QUALITY' AND PROBLEM.TYPE2 = 'Tool' THEN 1 ELSE 0 END AS QUALITY_TOOL_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'QUALITY' AND PROBLEM.TYPE2 = '작업자' THEN 1 ELSE 0 END AS QUALITY_WORKER_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'QUALITY' AND PROBLEM.TYPE2 = '기타' THEN 1 ELSE 0 END AS QUALITY_ETC_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'QUALITY' THEN 1 ELSE 0 END AS QUALITY_TOTAL_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYpe2 = '지그' THEN 1 ELSE 0 END AS FACILITIES_JIG_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYpe2 = '용접' THEN 1 ELSE 0 END AS FACILITIES_WELDING_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYpe2 = '보전성' THEN 1 ELSE 0 END AS FACILITIES_INTEGRITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYpe2 = '품질' THEN 1 ELSE 0 END AS FACILITIES_QUALITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYpe2 = '생산성' THEN 1 ELSE 0 END AS FACILITIES_FORMABILITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYpe2 = '안전' THEN 1 ELSE 0 END AS FACILITIES_SAFETY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYpe2 = '작업성' THEN 1 ELSE 0 END AS FACILITIES_WORKABILITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' THEN 1 ELSE 0 END AS FACILITIES_TOTAL_CNT
FROM
PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID,
PROBLEM_GROUP.REGION,
PROBLEM_GROUP.STEP1,
PROBLEM_GROUP.STEP2,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS OEM_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS CAR_CODE,
PROBLEM_GROUP.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROBLEM_GROUP.PROD_OBJID) AS PROD_GROUP_OBJID,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STATUS
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)PROBLEM_GROUP
WHERE PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
<if test="carObjId != null and !''.equals(carObjId)">
AND PROBLEM_GROUP.CAR_OBJID = #{carObjId}
</if>
<if test="productObjId != null and !''.equals(productObjId)">
AND PROBLEM_GROUP.PROD_OBJID = #{productObjId}
</if>
)
</select>
<!-- 제품문제점 관리 현황 최초 화면 로드 시 데이터가 존재하는 차종 정보중 가장 SOP에서 먼 정보를 가져온다. -->
<select id="getCarProductProblemBaseParam" parameterType="map" resultType="map">
SELECT
OEM_OBJID,
CAR_OBJID,
PRODUCT_GROUP_OBJID
FROM(
SELECT
INFO.*,
MILE.MILESTONE_DATE
FROM CAR_MILESTONE_MNG MILE,
(
SELECT
OEM_OBJID,
CAR_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_CODE,
PRODUCT_GROUP_OBJID
FROM(
SELECT
PROBLEM_GROUP.OEM_OBJID,
PROBLEM_GROUP.CAR_OBJID,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.PRODUCT_GROUP_OBJID
FROM
PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS OEM_OBJID,
PROBLEM_GROUP.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROBLEM_GROUP.PROD_OBJID) AS PRODUCT_GROUP_OBJID,
PROBLEM_GROUP.PROD_OBJID
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)PROBLEM_GROUP
WHERE PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
) GROUP BY OEM_OBJID,CAR_OBJID,PRODUCT_GROUP_OBJID
)INFO
WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1)
AND MILE.CAR_OBJID = INFO.CAR_OBJID
ORDER BY MILESTONE_DATE DESC NULLS LAST,CAR_CODE
) WHERE ROWNUM=1
</select>
<!-- 제품 문제점 관리 차종별 제품 문제점 현황 Pie chart -->
<select id="getCarProductProblemMngPieChart" parameterType="map" resultType="map">
SELECT
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PRODUCT_NAME,
PROD_GROUP_OBJID,
PROD_OBJID,
TOTAL_PROBLEM_CNT,
COMPLETE_CNT,
NOT_COMPLETE_CNT,
ROUND(CAR_PROBLEM_RATIO*100,1) AS CAR_PROBLEM_RATIO,
COMPLETE_RATIO,
NOT_COMPLETE_RATIO
FROM(
SELECT
PROD_OBJID,
PROD_GROUP_OBJID,
SUM(PROBLEM_CNT) AS TOTAL_PROBLEM_CNT,
SUM(COMPLETE_CNT) AS COMPLETE_CNT,
SUM(NOT_COMPLETE_CNT) AS NOT_COMPLETE_CNT,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE ROUND(SUM(COMPLETE_CNT)/SUM(PROBLEM_CNT)*100,1) END AS COMPLETE_RATIO,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE ROUND(SUM(NOT_COMPLETE_CNT)/SUM(PROBLEM_CNT)*100,1) END AS NOT_COMPLETE_RATIO,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE RATIO_TO_REPORT(SUM(PROBLEM_CNT)) OVER() END AS CAR_PROBLEM_RATIO
FROM(
SELECT
PROBLEM.OBJID,
PROBLEM.TARGET_OBJID,
PROBLEM.STATUS,
PROBLEM_GROUP.OEM_OBJID,
PROBLEM_GROUP.CAR_OBJID,
PROBLEM_GROUP.CAR_CODE,
PROBLEM_GROUP.PROD_GROUP_OBJID,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STEP2,
1 AS PROBLEM_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) = 'COMPLETE' THEN 1 ELSE 0 END AS COMPLETE_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) != 'COMPLETE' THEN 1 ELSE 0 END AS NOT_COMPLETE_CNT
FROM
PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID,
PROBLEM_GROUP.REGION,
PROBLEM_GROUP.STEP1,
PROBLEM_GROUP.STEP2,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS OEM_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS CAR_CODE,
PROBLEM_GROUP.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROBLEM_GROUP.PROD_OBJID) AS PROD_GROUP_OBJID,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STATUS
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)PROBLEM_GROUP
WHERE PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
<if test="carObjId != null and !''.equals(carObjId)">
AND PROBLEM_GROUP.CAR_OBJID = #{carObjId}
</if>
<if test="productGroupObjId != null and !''.equals(productGroupObjId)">
AND PROBLEM_GROUP.PROD_GROUP_OBJID = #{productGroupObjId}
</if>
<if test="productObjId != null and !''.equals(productObjId)">
AND PROBLEM_GROUP.PROD_OBJID = #{productObjId}
</if>
<if test="step1 != null and !''.equals(step1)">
AND PROBLEM_GROUP.STEP1 = #{step1}
</if>
<if test="step2 != null and !''.equals(step2)">
AND PROBLEM_GROUP.STEP2 = #{step2}
</if>
) GROUP BY PROD_OBJID, PROD_GROUP_OBJID
)
</select>
<!-- 제품 문제점 관리 차종별 제품 문제점 현황 List -->
<select id="getCarProductProblemMngList" parameterType="map" resultType="map">
SELECT
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PRODUCT_NAME,
PROD_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PROD_GROUP_OBJID,
TOTAL_PROBLEM_CNT,
COMPLETE_CNT,
NOT_COMPLETE_CNT,
ROUND(CAR_PROBLEM_RATIO*100,1) AS CAR_PROBLEM_RATIO,
COMPLETE_RATIO,
NOT_COMPLETE_RATIO
FROM(
SELECT
PROD_OBJID,
SUM(PROBLEM_CNT) AS TOTAL_PROBLEM_CNT,
SUM(COMPLETE_CNT) AS COMPLETE_CNT,
SUM(NOT_COMPLETE_CNT) AS NOT_COMPLETE_CNT,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE ROUND(SUM(COMPLETE_CNT)/SUM(PROBLEM_CNT)*100,1) END AS COMPLETE_RATIO,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE ROUND(SUM(NOT_COMPLETE_CNT)/SUM(PROBLEM_CNT)*100,1) END AS NOT_COMPLETE_RATIO,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE RATIO_TO_REPORT(SUM(PROBLEM_CNT)) OVER() END AS CAR_PROBLEM_RATIO
FROM(
SELECT
PROBLEM.OBJID,
PROBLEM.TARGET_OBJID,
PROBLEM.STATUS,
PROBLEM_GROUP.OEM_OBJID,
PROBLEM_GROUP.CAR_OBJID,
PROBLEM_GROUP.CAR_CODE,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STEP2,
1 AS PROBLEM_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) = 'COMPLETE' THEN 1 ELSE 0 END AS COMPLETE_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) != 'COMPLETE' THEN 1 ELSE 0 END AS NOT_COMPLETE_CNT
FROM
PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID,
PROBLEM_GROUP.REGION,
PROBLEM_GROUP.STEP1,
PROBLEM_GROUP.STEP2,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS OEM_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS CAR_CODE,
PROBLEM_GROUP.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROBLEM_GROUP.PROD_OBJID) AS PROD_GROUP_OBJID,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STATUS
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)PROBLEM_GROUP
WHERE PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
<if test="carObjId != null and !''.equals(carObjId)">
AND PROBLEM_GROUP.CAR_OBJID = #{carObjId}
</if>
<if test="productGroupObjId != null and !''.equals(productGroupObjId)">
AND PROBLEM_GROUP.PROD_GROUP_OBJID = #{productGroupObjId}
</if>
<if test="productObjId != null and !''.equals(productObjId)">
AND PROBLEM_GROUP.PROD_OBJID = #{productObjId}
</if>
<if test="step1 != null and !''.equals(step1)">
AND PROBLEM_GROUP.STEP1 = #{step1}
</if>
<if test="step2 != null and !''.equals(step2)">
AND PROBLEM_GROUP.STEP2 = #{step2}
</if>
) GROUP BY ROLLUP(PROD_OBJID) ORDER BY PROD_OBJID DESC
)
</select>
<!-- 제품 문제점 관리 유형1 Chart -->
<select id="getCarProductProblemType1ColumnChart" parameterType="map" resultType="map">
SELECT
TYPE1,
TYPE1_NAME,
TOTAL_PROBLEM_CNT,
COMPLETE_CNT,
NOT_COMPLETE_CNT,
COMPLETE_RATIO,
NOT_COMPLETE_RATIO
FROM(
SELECT
TYPE1,
TYPE1_NAME,
SUM(PROBLEM_CNT) AS TOTAL_PROBLEM_CNT,
SUM(COMPLETE_CNT) AS COMPLETE_CNT,
SUM(NOT_COMPLETE_CNT) AS NOT_COMPLETE_CNT,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE ROUND(SUM(COMPLETE_CNT)/SUM(PROBLEM_CNT)*100,1) END AS COMPLETE_RATIO,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE ROUND(SUM(NOT_COMPLETE_CNT)/SUM(PROBLEM_CNT)*100,1) END AS NOT_COMPLETE_RATIO,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE RATIO_TO_REPORT(SUM(PROBLEM_CNT)) OVER() END AS STEP2_PROBLEM_RATIO
FROM(
SELECT
PROBLEM.OBJID,
PROBLEM.TARGET_OBJID,
PROBLEM.STATUS,
PROBLEM.TYPE1,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' THEN '설계'
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' THEN '금형/단품'
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' THEN '조립/설비'
WHEN UPPER(PROBLEM.TYPE1) = 'ETC' THEN '부자재/기타'
ELSE TYPE1
END TYPE1_NAME,
PROBLEM.TYPE2,
PROBLEM_GROUP.OEM_OBJID,
PROBLEM_GROUP.CAR_OBJID,
PROBLEM_GROUP.CAR_CODE,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STEP2,
1 AS PROBLEM_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) = 'COMPLETE' THEN 1 ELSE 0 END AS COMPLETE_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) != 'COMPLETE' THEN 1 ELSE 0 END AS NOT_COMPLETE_CNT
FROM
PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID,
PROBLEM_GROUP.REGION,
PROBLEM_GROUP.STEP1,
PROBLEM_GROUP.STEP2,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS OEM_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS CAR_CODE,
PROBLEM_GROUP.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROBLEM_GROUP.PROD_OBJID) AS PROD_GROUP_OBJID,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STATUS
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)PROBLEM_GROUP
WHERE PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
<if test="carObjId != null and !''.equals(carObjId)">
AND PROBLEM_GROUP.CAR_OBJID = #{carObjId}
</if>
<if test="productGroupObjId != null and !''.equals(productGroupObjId)">
AND PROBLEM_GROUP.PROD_GROUP_OBJID = #{productGroupObjId}
</if>
<if test="productObjId != null and !''.equals(productObjId)">
AND PROBLEM_GROUP.PROD_OBJID = #{productObjId}
</if>
<if test="type1 != null and !''.equals(type1)">
AND PROBLEM.TYPE1 = #{type1}
</if>
<if test="type2 != null and !''.equals(type2)">
AND PROBLEM.TYPE2 = #{type2}
</if>
) GROUP BY TYPE1,TYPE1_NAME ORDER BY TYPE1 DESC
)
</select>
<!-- 제품 문제점 관리 유형2 Chart -->
<select id="getCarProductProblemType2ColumnChart" parameterType="map" resultType="map">
SELECT
TYPE1,
TYPE1_NAME,
TYPE2,
SUM(PROBLEM_CNT) AS TOTAL_PROBLEM_CNT,
SUM(COMPLETE_CNT) AS COMPLETE_CNT,
SUM(NOT_COMPLETE_CNT) AS NOT_COMPLETE_CNT,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE ROUND(SUM(COMPLETE_CNT)/SUM(PROBLEM_CNT)*100,1) END AS COMPLETE_RATIO,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE ROUND(SUM(NOT_COMPLETE_CNT)/SUM(PROBLEM_CNT)*100,1) END AS NOT_COMPLETE_RATIO,
CASE WHEN SUM(PROBLEM_CNT) = 0 THEN 0 ELSE RATIO_TO_REPORT(SUM(PROBLEM_CNT)) OVER() END AS STEP2_PROBLEM_RATIO
FROM(
SELECT
PROBLEM.OBJID,
PROBLEM.TARGET_OBJID,
PROBLEM.STATUS,
PROBLEM.TYPE1,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' THEN '설계'
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' THEN '금형/단품'
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' THEN '조립/설비'
WHEN UPPER(PROBLEM.TYPE1) = 'ETC' THEN '부자재/기타'
ELSE TYPE1
END TYPE1_NAME,
PROBLEM.TYPE2,
PROBLEM_GROUP.OEM_OBJID,
PROBLEM_GROUP.CAR_OBJID,
PROBLEM_GROUP.CAR_CODE,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STEP2,
1 AS PROBLEM_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) = 'COMPLETE' THEN 1 ELSE 0 END AS COMPLETE_CNT,
CASE WHEN UPPER(PROBLEM.STATUS) != 'COMPLETE' THEN 1 ELSE 0 END AS NOT_COMPLETE_CNT
FROM
PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID,
PROBLEM_GROUP.REGION,
PROBLEM_GROUP.STEP1,
PROBLEM_GROUP.STEP2,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS OEM_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PROBLEM_GROUP.CAR_OBJID) AS CAR_CODE,
PROBLEM_GROUP.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROBLEM_GROUP.PROD_OBJID) AS PROD_GROUP_OBJID,
PROBLEM_GROUP.PROD_OBJID,
PROBLEM_GROUP.STATUS
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)PROBLEM_GROUP
WHERE PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
<if test="carObjId != null and !''.equals(carObjId)">
AND PROBLEM_GROUP.CAR_OBJID = #{carObjId}
</if>
<if test="productGroupObjId != null and !''.equals(productGroupObjId)">
AND PROBLEM_GROUP.PROD_GROUP_OBJID = #{productGroupObjId}
</if>
<if test="productObjId != null and !''.equals(productObjId)">
AND PROBLEM_GROUP.PROD_OBJID = #{productObjId}
</if>
<if test="type1 != null and !''.equals(type1)">
AND PROBLEM.TYPE1 = #{type1}
</if>
<if test="type2 != null and !''.equals(type2)">
AND PROBLEM.TYPE2 = #{type2}
</if>
) GROUP BY TYPE1,TYPE1_NAME,TYPE2 ORDER BY TYPE2 DESC
</select>
<!-- 제품 문제점 관리 차종별 제품 문제점 현황 List -->
<select id="getCarProductProblemTypeList" parameterType="map" resultType="map">
SELECT P.TYPE1
, P.TYPE2
, COUNT(*) AS ALL_CNT
, COUNT(CASE WHEN UPPER(P.STATUS) = 'CREATE' THEN 1 ELSE NULL END) AS CREATE_CNT
, COUNT(CASE WHEN UPPER(P.STATUS) = 'COMPLETE' THEN 1 ELSE NULL END) AS COMPLETE_CNT
FROM (
SELECT PROBLEM_GROUP.*
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROBLEM_GROUP.PROD_OBJID) AS PROD_GROUP_OBJID
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)G, PMS_PROBLEM_INFO P
WHERE 1=1
AND G.OBJID = P.TARGET_OBJID
AND P.UNMANAGE_TYPE IS NULL
<if test="carObjId != null and !''.equals(carObjId)">
AND G.CAR_OBJID = #{carObjId}
</if>
<if test="productGroupObjId != null and !''.equals(productGroupObjId)">
AND G.PROD_GROUP_OBJID = #{productGroupObjId}
</if>
<if test="productObjId != null and !''.equals(productObjId)">
AND G.PROD_OBJID = #{productObjId}
</if>
<if test="type1 != null and !''.equals(type1)">
AND P.TYPE1 = #{type1}
</if>
<if test="type2 != null and !''.equals(type2)">
AND P.TYPE2 = #{type2}
</if>
GROUP BY ROLLUP((P.TYPE1, P.TYPE2))
ORDER BY P.TYPE1 NULLS FIRST, P.TYPE2
</select>
<!-- 단품/Assay 검사관리 현황 검사 조립검사별 현황 -->
<select id="getTestMngStatusTestResultPieChart" parameterType="map" resultType="map">
SELECT
CASE WHEN SUM(PRODUCT_COUNT) = 0 THEN 0 ELSE ROUND(SUM(PASS_CNT)/SUM(PRODUCT_COUNT)*100,1) END AS PRODUCT_PASS_CNT,
CASE WHEN SUM(PRODUCT_COUNT) = 0 THEN 0 ELSE ROUND(SUM(FAIL_CNT)/SUM(PRODUCT_COUNT)*100,1) END AS PRODUCT_FAIL_CNT
FROM (
SELECT
PROD_OBJID,
CASE WHEN SUM(PRODUCT_CNT) = SUM(PRODUCT_PASS_CNT) THEN 1 ELSE 0 END AS PASS_CNT,
CASE WHEN SUM(PRODUCT_CNT) != SUM(PRODUCT_PASS_CNT) THEN 1 ELSE 0 END AS FAIL_CNT,
1 AS PRODUCT_COUNT
FROM (
SELECT
TEST_INFO.*,
CASE WHEN TEST_INFO.MATERIAL_TYPE_NAME = '제품' THEN 1 ELSE 0 END AS PRODUCT_CNT,
CASE WHEN TEST_INFO.MATERIAL_TYPE_NAME = '반제품' THEN 1 ELSE 0 END AS SEMI_PRODUCT_CNT,
CASE WHEN UPPER(TEST_INFO.RESULT) = 'Y' AND TEST_INFO.MATERIAL_TYPE_NAME = '제품' THEN 1 ELSE 0 END AS PRODUCT_PASS_CNT,
CASE WHEN UPPER(TEST_INFO.RESULT) = 'N' AND TEST_INFO.MATERIAL_TYPE_NAME = '제품' THEN 1 ELSE 0 END AS PRODUCT_FAIL_CNT,
CASE WHEN UPPER(TEST_INFO.RESULT) = 'Y' AND TEST_INFO.MATERIAL_TYPE_NAME = '반제품' THEN 1 ELSE 0 END AS SEMI_PRODUCT_PASS_CNT,
CASE WHEN UPPER(TEST_INFO.RESULT) = 'N' AND TEST_INFO.MATERIAL_TYPE_NAME = '반제품' THEN 1 ELSE 0 END AS SEMI_PRODUCT_FAIL_CNT,
CASE WHEN 90 <![CDATA[ < ]]> TEST_INFO.SCORE THEN 1 ELSE 0 END AS SCORE_90_OVER_CNT,
CASE WHEN 85 <![CDATA[ < ]]> TEST_INFO.SCORE THEN 1 ELSE 0 END AS SCORE_85_OVER_CNT,
CASE WHEN 80 <![CDATA[ < ]]> TEST_INFO.SCORE THEN 1 ELSE 0 END AS SCORE_80_OVER_CNT,
CASE WHEN 80 <![CDATA[ > ]]> SCORE THEN 1 ELSE 0 END AS SCORE_80_UNDER_CNT
FROM(
SELECT
PART_INFO.MATERIAL_TYPE_NAME,
ATTR.*,
INFO.PROD_OBJID
FROM
PMS_QUALITY_TEST_REL_PART_ATTR ATTR,
PMS_QUALITY_TEST_INFO INFO,
(
SELECT
PART_NO,
(SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = MATERIAL_TYPE_OBJID) MATERIAL_TYPE_NAME
FROM PART_INFO WHERE IS_LAST = 1
AND IS_START_DEV_PART IS NULL
)PART_INFO
WHERE ATTR.SCORE IS NOT NULL
AND ATTR.RESULT IS NOT NULL
AND ATTR.TARGET_OBJID = INFO.OBJID
AND ATTR.PART_NO = PART_INFO.PART_NO(+)
<if test="oemObjId != null and !''.equals(oemObjId)">
AND (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) = #{oemObjId}
</if>
<if test="carObjId != null and !''.equals(carObjId)">
AND INFO.CAR_OBJID = #{carObjId}
</if>
<if test="step1 != null and !''.equals(step1)">
AND INFO.STEP1 = #{step1}
</if>
<if test="step2 != null and !''.equals(step2)">
AND INFO.STEP2 = #{step2}
</if>
)TEST_INFO
)GROUP BY PROD_OBJID
)
</select>
<!-- 단품/Assay 검사관리 현황 검사 점수별 현황 -->
<select id="getTestMngStatusTestScorePieChart" parameterType="map" resultType="map">
SELECT
SUM(SEMI_PRODUCT_PASS_CNT) AS SEMI_PRODUCT_PASS_CNT,
SUM(SEMI_PRODUCT_FAIL_CNT) AS SEMI_PRODUCT_FAIL_CNT,
SUM(SEMI_PRODUCT_CNT) AS SEMI_PRODUCT_CNT,
SUM(SCORE_90_OVER_CNT) AS SUM_SCORE_90_OVER_CNT,
SUM(SCORE_85_OVER_CNT) AS SUM_SCORE_85_OVER_CNT,
SUM(SCORE_80_OVER_CNT) AS SUM_SCORE_80_OVER_CNT,
SUM(SCORE_80_UNDER_CNT) AS SUM_SCORE_80_UNDER_CNT,
(SUM(SCORE_90_OVER_CNT)+SUM(SCORE_85_OVER_CNT)+SUM(SCORE_80_OVER_CNT)+SUM(SCORE_80_UNDER_CNT)) AS SUM_SCORE_TOTAL_CNT
FROM(
SELECT
TEST_INFO.*,
CASE WHEN TEST_INFO.MATERIAL_TYPE_NAME = '제품' THEN 1 ELSE 0 END AS PRODUCT_CNT,
CASE WHEN TEST_INFO.MATERIAL_TYPE_NAME = '반제품' THEN 1 ELSE 0 END AS SEMI_PRODUCT_CNT,
CASE WHEN UPPER(TEST_INFO.RESULT) = 'Y' AND TEST_INFO.MATERIAL_TYPE_NAME = '제품' THEN 1 ELSE 0 END AS PRODUCT_PASS_CNT,
CASE WHEN UPPER(TEST_INFO.RESULT) = 'N' AND TEST_INFO.MATERIAL_TYPE_NAME = '제품' THEN 1 ELSE 0 END AS PRODUCT_FAIL_CNT,
CASE WHEN UPPER(TEST_INFO.RESULT) = 'Y' AND TEST_INFO.MATERIAL_TYPE_NAME = '반제품' THEN 1 ELSE 0 END AS SEMI_PRODUCT_PASS_CNT,
CASE WHEN UPPER(TEST_INFO.RESULT) = 'N' AND TEST_INFO.MATERIAL_TYPE_NAME = '반제품' THEN 1 ELSE 0 END AS SEMI_PRODUCT_FAIL_CNT,
CASE WHEN 90 <![CDATA[ < ]]> TEST_INFO.SCORE THEN 1 ELSE 0 END AS SCORE_90_OVER_CNT,
CASE WHEN 85 <![CDATA[ < ]]> TEST_INFO.SCORE THEN 1 ELSE 0 END AS SCORE_85_OVER_CNT,
CASE WHEN 80 <![CDATA[ < ]]> TEST_INFO.SCORE THEN 1 ELSE 0 END AS SCORE_80_OVER_CNT,
CASE WHEN 80 <![CDATA[ > ]]> SCORE THEN 1 ELSE 0 END AS SCORE_80_UNDER_CNT
FROM(
SELECT
PART_INFO.MATERIAL_TYPE_NAME,
ATTR.*,
INFO.PROD_OBJID
FROM
PMS_QUALITY_TEST_REL_PART_ATTR ATTR,
PMS_QUALITY_TEST_INFO INFO,
(
SELECT
PART_NO,
(SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = MATERIAL_TYPE_OBJID) MATERIAL_TYPE_NAME
FROM PART_INFO WHERE IS_LAST = 1
AND IS_START_DEV_PART IS NULL
)PART_INFO
WHERE ATTR.SCORE IS NOT NULL
AND ATTR.RESULT IS NOT NULL
AND ATTR.TARGET_OBJID = INFO.OBJID
AND ATTR.PART_NO = PART_INFO.PART_NO(+)
<if test="oemObjId != null and !''.equals(oemObjId)">
AND (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) = #{oemObjId}
</if>
<if test="carObjId != null and !''.equals(carObjId)">
AND INFO.CAR_OBJID = #{carObjId}
</if>
<if test="step1 != null and !''.equals(step1)">
AND INFO.STEP1 = #{step1}
</if>
<if test="step2 != null and !''.equals(step2)">
AND INFO.STEP2 = #{step2}
</if>
)TEST_INFO
)
</select>
<!-- 단품/Assay 검사관리 현황 단품/조립 문제점 유형별 현황 -->
<select id="getTestMngStatusProblemTypePieChart" parameterType="map" resultType="map">
SELECT
SUM(D_STRUCTURE_CNT) AS SUM_D_STRUCTURE_CNT,
SUM(D_WATERTIGHTNESS_CNT) AS SUM_D_WATERTIGHTNESS_CNT,
SUM(D_NVH_CNT) AS SUM_D_NVH_CNT,
SUM(D_DATA_CNT) AS SUM_D_DATA_CNT,
SUM(D_PRODUCTIVITY_CNT) AS SUM_D_PRODUCTIVITY_CNT,
SUM(D_ASSEMBLABILITY_CNT) AS SUM_D_ASSEMBLABILITY_CNT,
SUM(D_FORMABILITY_CNT) AS SUM_D_FORMABILITY_CNT,
SUM(D_WORKABILITY_CNT) AS SUM_D_WORKABILITY_CNT,
SUM(D_COST_REDUCTION_CNT) AS SUM_D_COST_REDUCTION_CNT,
SUM(D_ETC_CNT) AS SUM_D_ETC_CNT,
SUM(D_TOTAL_CNT) AS SUM_D_TOTAL_CNT,
SUM(M_CRACK_NECK_CNT) AS SUM_M_CRACK_NECK_CNT,
SUM(M_WRINKLE_CNT) AS SUM_M_WRINKLE_CNT,
SUM(M_BURR_CNT) AS SUM_M_BURR_CNT,
SUM(M_SCRATCH_CNT) AS SUM_M_SCRATCH_CNT,
SUM(M_NOT_EQUAL_MATERIAL_CNT) AS SUM_M_NOT_EQUAL_MATERIAL_CNT,
SUM(M_BAD_THICKNESS_CNT) AS SUM_M_BAD_THICKNESS_CNT,
SUM(M_RUST_CNT) AS SUM_M_RUST_CNT,
SUM(M_HOLE_CNT) AS SUM_M_HOLE_CNT,
SUM(M_SHAPE_TRANSFORM_CNT) AS SUM_M_SHAPE_TRANSFORM_CNT,
SUM(M_UNFORMED_CNT) AS SUM_M_UNFORMED_CNT,
SUM(M_FLATNESS_CNT) AS SUM_M_FLATNESS_CNT,
SUM(M_FOREIGN_MATTER_CNT) AS SUM_M_FOREIGN_MATTER_CNT,
SUM(M_MISSING_PROCESS_CNT) AS SUM_M_MISSING_PROCESS_CNT,
SUM(M_ETC_CNT) AS SUM_M_ETC_CNT,
SUM(M_TOTAL_CNT) AS SUM_M_TOTAL_CNT,
SUM(F_HW_ASSEMBLY_CNT) AS SUM_F_HW_ASSEMBLY_CNT,
SUM(F_SPOT_WELDING_CNT) AS SUM_F_SPOT_WELDING_CNT,
SUM(F_CO2_WELDING_CNT) AS SUM_F_CO2_WELDING_CNT,
SUM(F_MISS_ASSAMBLY_CNT) AS SUM_F_MISS_ASSAMBLY_CNT,
SUM(F_FRAME_GLUE_CNT) AS SUM_F_FRAME_GLUE_CNT,
SUM(F_TAPE_SILLER_CNT) AS SUM_F_TAPE_SILLER_CNT,
SUM(F_SCATTER_CNT) AS SUM_F_SCATTER_CNT,
SUM(F_JIG_CNT) AS SUM_F_JIG_CNT,
SUM(F_PAD_CNT) AS SUM_F_PAD_CNT,
SUM(F_TOOL_CNT) AS SUM_F_TOOL_CNT,
SUM(F_FULL_PROOF_CNT) AS SUM_F_FULL_PROOF_CNT,
SUM(F_WORKABILITY_CNT) AS SUM_F_WORKABILITY_CNT,
SUM(F_ETC_CNT) AS SUM_F_ETC_CNT,
SUM(F_TOTAL_CNT) AS SUM_F_TOTAL_CNT,
SUM(E_PAD_CNT) AS SUM_E_PAD_CNT,
SUM(E_HW_CNT) AS SUM_E_HW_CNT,
SUM(E_PLT_CNT) AS SUM_E_PLT_CNT,
SUM(E_FRAME_GLUE_CNT) AS SUM_E_FRAME_GLUE_CNT,
SUM(E_TAPE_SILLER_CNT) AS SUM_E_TAPE_SILLER_CNT,
SUM(E_WORKER_CNT) AS SUM_E_WORKER_CNT,
SUM(E_STABILITY_CNT) AS SUM_E_STABILITY_CNT,
SUM(E_TOOL_CNT) AS SUM_E_TOOL_CNT,
SUM(E_ETC_CNT) AS SUM_E_ETC_CNT,
SUM(E_TOTAL_CNT) AS SUM_E_TOTAL_CNT,
SUM(PROBLEM_CNT) AS SUM_PROBLEM_CNT
FROM
(
SELECT
TEST_INFO.*
FROM
(
SELECT
ATTR.*,
INFO.PROD_OBJID,
(
SELECT
(
SELECT
MATERIAL_TYPE_NAME
FROM
MATERIAL_TYPE_MNG
WHERE
OBJID = MATERIAL_TYPE_OBJID
) MATERIAL_TYPE_NAME
FROM
PART_INFO
WHERE
IS_LAST = 1
AND IS_START_DEV_PART IS NULL
AND PART_NO = ATTR.PART_NO
) AS MATERIAL_TYPE_NAME,
PART_PROBLEM.*
FROM
PMS_QUALITY_TEST_REL_PART_ATTR ATTR,
PMS_QUALITY_TEST_INFO INFO,
(
SELECT
PART_NO AS PROBLEM_PART,
SUM(D_STRUCTURE_CNT) AS D_STRUCTURE_CNT,
SUM(D_WATERTIGHTNESS_CNT) AS D_WATERTIGHTNESS_CNT,
SUM(D_NVH_CNT) AS D_NVH_CNT,
SUM(D_DATA_CNT) AS D_DATA_CNT,
SUM(D_PRODUCTIVITY_CNT) AS D_PRODUCTIVITY_CNT,
SUM(D_ASSEMBLABILITY_CNT) AS D_ASSEMBLABILITY_CNT,
SUM(D_FORMABILITY_CNT) AS D_FORMABILITY_CNT,
SUM(D_WORKABILITY_CNT) AS D_WORKABILITY_CNT,
SUM(D_COST_REDUCTION_CNT) AS D_COST_REDUCTION_CNT,
SUM(D_ETC_CNT) AS D_ETC_CNT,
SUM(D_TOTAL_CNT) AS D_TOTAL_CNT,
SUM(M_CRACK_NECK_CNT) AS M_CRACK_NECK_CNT,
SUM(M_WRINKLE_CNT) AS M_WRINKLE_CNT,
SUM(M_BURR_CNT) AS M_BURR_CNT,
SUM(M_SCRATCH_CNT) AS M_SCRATCH_CNT,
SUM(M_NOT_EQUAL_MATERIAL_CNT) AS M_NOT_EQUAL_MATERIAL_CNT,
SUM(M_BAD_THICKNESS_CNT) AS M_BAD_THICKNESS_CNT,
SUM(M_RUST_CNT) AS M_RUST_CNT,
SUM(M_HOLE_CNT) AS M_HOLE_CNT,
SUM(M_SHAPE_TRANSFORM_CNT) AS M_SHAPE_TRANSFORM_CNT,
SUM(M_UNFORMED_CNT) AS M_UNFORMED_CNT,
SUM(M_FLATNESS_CNT) AS M_FLATNESS_CNT,
SUM(M_FOREIGN_MATTER_CNT) AS M_FOREIGN_MATTER_CNT,
SUM(M_MISSING_PROCESS_CNT) AS M_MISSING_PROCESS_CNT,
SUM(M_ETC_CNT) AS M_ETC_CNT,
SUM(M_TOTAL_CNT) AS M_TOTAL_CNT,
SUM(F_HW_ASSEMBLY_CNT) AS F_HW_ASSEMBLY_CNT,
SUM(F_SPOT_WELDING_CNT) AS F_SPOT_WELDING_CNT,
SUM(F_CO2_WELDING_CNT) AS F_CO2_WELDING_CNT,
SUM(F_MISS_ASSAMBLY_CNT) AS F_MISS_ASSAMBLY_CNT,
SUM(F_FRAME_GLUE_CNT) AS F_FRAME_GLUE_CNT,
SUM(F_TAPE_SILLER_CNT) AS F_TAPE_SILLER_CNT,
SUM(F_SCATTER_CNT) AS F_SCATTER_CNT,
SUM(F_JIG_CNT) AS F_JIG_CNT,
SUM(F_PAD_CNT) AS F_PAD_CNT,
SUM(F_TOOL_CNT) AS F_TOOL_CNT,
SUM(F_FULL_PROOF_CNT) AS F_FULL_PROOF_CNT,
SUM(F_WORKABILITY_CNT) AS F_WORKABILITY_CNT,
SUM(F_ETC_CNT) AS F_ETC_CNT,
SUM(F_TOTAL_CNT) AS F_TOTAL_CNT,
SUM(E_PAD_CNT) AS E_PAD_CNT,
SUM(E_HW_CNT) AS E_HW_CNT,
SUM(E_PLT_CNT) AS E_PLT_CNT,
SUM(E_FRAME_GLUE_CNT) AS E_FRAME_GLUE_CNT,
SUM(E_TAPE_SILLER_CNT) AS E_TAPE_SILLER_CNT,
SUM(E_WORKER_CNT) AS E_WORKER_CNT,
SUM(E_STABILITY_CNT) AS E_STABILITY_CNT,
SUM(E_TOOL_CNT) AS E_TOOL_CNT,
SUM(E_ETC_CNT) AS E_ETC_CNT,
SUM(E_TOTAL_CNT) AS E_TOTAL_CNT,
SUM(PROBLEM_CNT) AS PROBLEM_CNT
FROM
(
SELECT
PROBLEM.OBJID,
PROBLEM.TARGET_OBJID,
PROBLEM.STATUS,
PROBLEM.PART_NO,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN'
AND PROBLEM.TYPE2 = '구조' THEN 1
ELSE 0
END AS D_STRUCTURE_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN'
AND PROBLEM.TYPE2 = '수밀' THEN 1
ELSE 0
END AS D_WATERTIGHTNESS_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN'
AND PROBLEM.TYPE2 = 'NVH' THEN 1
ELSE 0
END AS D_NVH_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN'
AND PROBLEM.TYPE2 = 'DATA' THEN 1
ELSE 0
END AS D_DATA_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN'
AND PROBLEM.TYPE2 = '생산성' THEN 1
ELSE 0
END AS D_PRODUCTIVITY_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN'
AND PROBLEM.TYPE2 = '조립성' THEN 1
ELSE 0
END AS D_ASSEMBLABILITY_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN'
AND PROBLEM.TYPE2 = '성형성' THEN 1
ELSE 0
END AS D_FORMABILITY_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN'
AND PROBLEM.TYPE2 = '작업성' THEN 1
ELSE 0
END AS D_WORKABILITY_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN'
AND PROBLEM.TYPE2 = '원가절감' THEN 1
ELSE 0
END AS D_COST_REDUCTION_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN'
AND PROBLEM.TYPE2 = '기타' THEN 1
ELSE 0
END AS D_ETC_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' THEN 1
ELSE 0
END AS D_TOTAL_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '크랙, 네크' THEN 1
ELSE 0
END AS M_CRACK_NECK_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '주름' THEN 1
ELSE 0
END AS M_WRINKLE_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '버(BURR)' THEN 1
ELSE 0
END AS M_BURR_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '스크래치' THEN 1
ELSE 0
END AS M_SCRATCH_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '이종재질' THEN 1
ELSE 0
END AS M_NOT_EQUAL_MATERIAL_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '두께불량' THEN 1
ELSE 0
END AS M_BAD_THICKNESS_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '녹(RUST)' THEN 1
ELSE 0
END AS M_RUST_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '홀(HOLE)' THEN 1
ELSE 0
END AS M_HOLE_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '형상변형' THEN 1
ELSE 0
END AS M_SHAPE_TRANSFORM_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '미성형' THEN 1
ELSE 0
END AS M_UNFORMED_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '평탄도' THEN 1
ELSE 0
END AS M_FLATNESS_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '이물질' THEN 1
ELSE 0
END AS M_FOREIGN_MATTER_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '공정누락' THEN 1
ELSE 0
END AS M_MISSING_PROCESS_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD'
AND PROBLEM.TYPE2 = '기타' THEN 1
ELSE 0
END AS M_ETC_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' THEN 1
ELSE 0
END AS M_TOTAL_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = 'HW조립' THEN 1
ELSE 0
END AS F_HW_ASSEMBLY_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = 'SPOT용접' THEN 1
ELSE 0
END AS F_SPOT_WELDING_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = 'CO2용접' THEN 1
ELSE 0
END AS F_CO2_WELDING_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = '오조립' THEN 1
ELSE 0
END AS F_MISS_ASSAMBLY_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = '구조용접착제' THEN 1
ELSE 0
END AS F_FRAME_GLUE_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = 'TAPE실러' THEN 1
ELSE 0
END AS F_TAPE_SILLER_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = '산포' THEN 1
ELSE 0
END AS F_SCATTER_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = '지그' THEN 1
ELSE 0
END AS F_JIG_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = 'PAD' THEN 1
ELSE 0
END AS F_PAD_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = 'TOOL' THEN 1
ELSE 0
END AS F_TOOL_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = '풀프루프' THEN 1
ELSE 0
END AS F_FULL_PROOF_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = '작업성' THEN 1
ELSE 0
END AS F_WORKABILITY_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES'
AND PROBLEM.TYPE2 = '기타' THEN 1
ELSE 0
END AS F_ETC_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' THEN 1
ELSE 0
END AS F_TOTAL_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'ETC'
AND PROBLEM.TYPE2 = 'PAD' THEN 1
ELSE 0
END AS E_PAD_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'ETC'
AND PROBLEM.TYPE2 = 'HW' THEN 1
ELSE 0
END AS E_HW_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'ETC'
AND PROBLEM.TYPE2 = 'PLT' THEN 1
ELSE 0
END AS E_PLT_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'ETC'
AND PROBLEM.TYPE2 = '구조용접착제' THEN 1
ELSE 0
END AS E_FRAME_GLUE_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'ETC'
AND PROBLEM.TYPE2 = 'TAPE실러' THEN 1
ELSE 0
END AS E_TAPE_SILLER_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'ETC'
AND PROBLEM.TYPE2 = '작업자' THEN 1
ELSE 0
END AS E_WORKER_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'ETC'
AND PROBLEM.TYPE2 = '안정성' THEN 1
ELSE 0
END AS E_STABILITY_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'ETC'
AND PROBLEM.TYPE2 = 'TOOL' THEN 1
ELSE 0
END AS E_TOOL_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'ETC'
AND PROBLEM.TYPE2 = '기타' THEN 1
ELSE 0
END AS E_ETC_CNT,
CASE
WHEN UPPER(PROBLEM.TYPE1) = 'ETC' THEN 1
ELSE 0
END AS E_TOTAL_CNT,
1 AS PROBLEM_CNT
FROM
PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID
FROM
PMS_PROBLEM_GROUP PROBLEM_GROUP
) PROBLEM_GROUP
WHERE
PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
)
GROUP BY ROLLUP (PART_NO)
) PART_PROBLEM
WHERE
ATTR.SCORE IS NOT NULL
AND ATTR.RESULT IS NOT NULL
AND ATTR.TARGET_OBJID = INFO.OBJID
AND ATTR.PART_NO = PART_PROBLEM.PROBLEM_PART(+)
<if test="oemObjId != null and !''.equals(oemObjId)">
AND (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) = #{oemObjId}
</if>
<if test="carObjId != null and !''.equals(carObjId)">
AND INFO.CAR_OBJID = #{carObjId}
</if>
<if test="step1 != null and !''.equals(step1)">
AND INFO.STEP1 = #{step1}
</if>
<if test="step2 != null and !''.equals(step2)">
AND INFO.STEP2 = #{step2}
</if>
) TEST_INFO
)
</select>
<!-- 단품/Assay 검사관리 현황 단품/Assay 검사관리 현황 List P14 -->
<select id="getTestMngStatusRollUpList" parameterType="map" resultType="map">
SELECT
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PROD_NAME,
PROD_OBJID,
PROD_GROUP_OBJID,
SUM(SEMI_PRODUCT_PASS_CNT) AS SUM_SEMI_PRODUCT_PASS_CNT,
SUM(SEMI_PRODUCT_FAIL_CNT) AS SUM_SEMI_PRODUCT_FAIL_CNT,
SUM(SEMI_PRODUCT_CNT) AS SUM_SEMI_PRODUCT_CNT,
CASE WHEN SUM(PRODUCT_CNT) = SUM(PRODUCT_PASS_CNT) THEN '합격' ELSE '불합격' END AS PRODUCT_PASS_FLAG,
SUM(SCORE_90_OVER_CNT) AS SUM_SCORE_90_OVER_CNT,
SUM(SCORE_85_OVER_CNT) AS SUM_SCORE_85_OVER_CNT,
SUM(SCORE_80_OVER_CNT) AS SUM_SCORE_80_OVER_CNT,
SUM(SCORE_80_UNDER_CNT) AS SUM_SCORE_80_UNDER_CNT,
(SUM(SCORE_90_OVER_CNT)+SUM(SCORE_85_OVER_CNT)+SUM(SCORE_80_OVER_CNT)+SUM(SCORE_80_UNDER_CNT)) AS SCORE_TOTAL_CNT,
NVL(SUM(D_STRUCTURE_CNT),0) AS SUM_D_STRUCTURE_CNT,
NVL(SUM(D_WATERTIGHTNESS_CNT),0) AS SUM_D_WATERTIGHTNESS_CNT,
NVL(SUM(D_NVH_CNT),0) AS SUM_D_NVH_CNT,
NVL(SUM(D_DATA_CNT),0) AS SUM_D_DATA_CNT,
NVL(SUM(D_PRODUCTIVITY_CNT),0) AS SUM_D_PRODUCTIVITY_CNT,
NVL(SUM(D_ASSEMBLABILITY_CNT),0) AS SUM_D_ASSEMBLABILITY_CNT,
NVL(SUM(D_FORMABILITY_CNT),0) AS SUM_D_FORMABILITY_CNT,
NVL(SUM(D_WORKABILITY_CNT),0) AS SUM_D_WORKABILITY_CNT,
NVL(SUM(D_COST_REDUCTION_CNT),0) AS SUM_D_COST_REDUCTION_CNT,
NVL(SUM(D_ETC_CNT),0) AS SUM_D_ETC_CNT,
NVL(SUM(D_TOTAL_CNT),0) AS SUM_D_TOTAL_CNT,
NVL(SUM(M_CRACK_NECK_CNT),0) AS SUM_M_CRACK_NECK_CNT,
NVL(SUM(M_WRINKLE_CNT),0) AS SUM_M_WRINKLE_CNT,
NVL(SUM(M_BURR_CNT),0) AS SUM_M_BURR_CNT,
NVL(SUM(M_SCRATCH_CNT),0) AS SUM_M_SCRATCH_CNT,
NVL(SUM(M_NOT_EQUAL_MATERIAL_CNT),0) AS SUM_M_NOT_EQUAL_MATERIAL_CNT,
NVL(SUM(M_BAD_THICK_CNT),0) AS SUM_M_BAD_THICK_CNT,
NVL(SUM(M_RUST_CNT),0) AS SUM_M_RUST_CNT,
NVL(SUM(M_HOLE_CNT),0) AS SUM_M_HOLE_CNT,
NVL(SUM(M_SHAPE_TRANSFORM_CNT),0) AS SUM_M_SHAPE_TRANSFORM_CNT,
NVL(SUM(M_UNFORMED_CNT),0) AS SUM_M_UNFORMED_CNT,
NVL(SUM(M_FLATNESS_CNT),0) AS SUM_M_FLATNESS_CNT,
NVL(SUM(M_FOREIGN_MATTER_CNT),0) AS SUM_M_FOREIGN_MATTER_CNT,
NVL(SUM(M_MISSING_PROCESS_CNT),0) AS SUM_M_MISSING_PROCESS_CNT,
NVL(SUM(M_ETC_CNT),0) AS SUM_M_ETC_CNT,
NVL(SUM(M_TOTAL_CNT),0) AS SUM_M_TOTAL_CNT,
NVL(SUM(F_HW_ASSEMBLY_CNT),0) AS SUM_F_HW_ASSEMBLY_CNT,
NVL(SUM(F_SPOT_WELDING_CNT),0) AS SUM_F_SPOT_WELDING_CNT,
NVL(SUM(F_CO2_WELDING_CNT),0) AS SUM_F_CO2_WELDING_CNT,
NVL(SUM(F_MISS_ASSAMBLY_CNT),0) AS SUM_F_MISS_ASSAMBLY_CNT,
NVL(SUM(F_FRAME_GLUE_CNT),0) AS SUM_F_FRAME_GLUE_CNT,
NVL(SUM(F_TAPE_SILLER_CNT),0) AS SUM_F_TAPE_SILLER_CNT,
NVL(SUM(F_SCATTER_CNT),0) AS SUM_F_SCATTER_CNT,
NVL(SUM(F_JIG_CNT),0) AS SUM_F_JIG_CNT,
NVL(SUM(F_PAD_CNT),0) AS SUM_F_PAD_CNT,
NVL(SUM(F_TOOL_CNT),0) AS SUM_F_TOOL_CNT,
NVL(SUM(F_FULL_PROOF_CNT),0) AS SUM_F_FULL_PROOF_CNT,
NVL(SUM(F_WORKABILITY_CNT),0) AS SUM_F_WORKABILITY_CNT,
NVL(SUM(F_ETC_CNT),0) AS SUM_F_ETC_CNT,
NVL(SUM(F_TOTAL_CNT),0) AS SUM_F_TOTAL_CNT,
NVL(SUM(E_PAD_CNT),0) AS SUM_E_PAD_CNT,
NVL(SUM(E_HW_CNT),0) AS SUM_E_HW_CNT,
NVL(SUM(E_PLT_CNT),0) AS SUM_E_PLT_CNT,
NVL(SUM(E_FRAME_GLUE_CNT),0) AS SUM_E_FRAME_GLUE_CNT,
NVL(SUM(E_TAPE_SILLER_CNT),0) AS SUM_E_TAPE_SILLER_CNT,
NVL(SUM(E_WORKER_CNT),0) AS SUM_E_WORKER_CNT,
NVL(SUM(E_STABILITY_CNT),0) AS SUM_E_STABILITY_CNT,
NVL(SUM(E_TOOL_CNT),0) AS SUM_E_TOOL_CNT,
NVL(SUM(E_ETC_CNT),0) AS SUM_E_ETC_CNT,
NVL(SUM(E_TOTAL_CNT),0) AS SUM_F_PAD_CNT
FROM(
SELECT
TEST_INFO.*,
CASE WHEN TEST_INFO.MATERIAL_TYPE_NAME = '제품' THEN 1 ELSE 0 END AS PRODUCT_CNT,
CASE WHEN TEST_INFO.MATERIAL_TYPE_NAME = '반제품' THEN 1 ELSE 0 END AS SEMI_PRODUCT_CNT,
CASE WHEN UPPER(TEST_INFO.RESULT) = 'Y' AND TEST_INFO.MATERIAL_TYPE_NAME = '제품' THEN 1 ELSE 0 END AS PRODUCT_PASS_CNT,
CASE WHEN UPPER(TEST_INFO.RESULT) = 'N' AND TEST_INFO.MATERIAL_TYPE_NAME = '제품' THEN 1 ELSE 0 END AS PRODUCT_FAIL_CNT,
CASE WHEN UPPER(TEST_INFO.RESULT) = 'Y' AND TEST_INFO.MATERIAL_TYPE_NAME = '반제품' THEN 1 ELSE 0 END AS SEMI_PRODUCT_PASS_CNT,
CASE WHEN UPPER(TEST_INFO.RESULT) = 'N' AND TEST_INFO.MATERIAL_TYPE_NAME = '반제품' THEN 1 ELSE 0 END AS SEMI_PRODUCT_FAIL_CNT,
CASE WHEN 90 <![CDATA[ < ]]> TEST_INFO.SCORE THEN 1 ELSE 0 END AS SCORE_90_OVER_CNT,
CASE WHEN 85 <![CDATA[ < ]]> TEST_INFO.SCORE THEN 1 ELSE 0 END AS SCORE_85_OVER_CNT,
CASE WHEN 80 <![CDATA[ < ]]> TEST_INFO.SCORE THEN 1 ELSE 0 END AS SCORE_80_OVER_CNT,
CASE WHEN 80 <![CDATA[ > ]]> SCORE THEN 1 ELSE 0 END AS SCORE_80_UNDER_CNT
FROM(
SELECT
ATTR.*,
INFO.PROD_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PROD_GROUP_OBJID,
(SELECT (SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = MATERIAL_TYPE_OBJID) MATERIAL_TYPE_NAME FROM PART_INFO WHERE IS_LAST = 1 AND IS_START_DEV_PART IS NULL AND PART_NO = ATTR.PART_NO) AS MATERIAL_TYPE_NAME,
PART_PROBLEM.*
FROM
PMS_QUALITY_TEST_REL_PART_ATTR ATTR,
PMS_QUALITY_TEST_INFO INFO,
(
SELECT
PART_NO AS PROBLEM_PART,
SUM(D_STRUCTURE_CNT) AS D_STRUCTURE_CNT,
SUM(D_WATERTIGHTNESS_CNT) AS D_WATERTIGHTNESS_CNT,
SUM(D_NVH_CNT) AS D_NVH_CNT,
SUM(D_DATA_CNT) AS D_DATA_CNT,
SUM(D_PRODUCTIVITY_CNT) AS D_PRODUCTIVITY_CNT,
SUM(D_ASSEMBLABILITY_CNT) AS D_ASSEMBLABILITY_CNT,
SUM(D_FORMABILITY_CNT) AS D_FORMABILITY_CNT,
SUM(D_WORKABILITY_CNT) AS D_WORKABILITY_CNT,
SUM(D_COST_REDUCTION_CNT) AS D_COST_REDUCTION_CNT,
SUM(D_ETC_CNT) AS D_ETC_CNT,
SUM(D_TOTAL_CNT) AS D_TOTAL_CNT,
SUM(M_CRACK_NECK_CNT) AS M_CRACK_NECK_CNT,
SUM(M_WRINKLE_CNT) AS M_WRINKLE_CNT,
SUM(M_BURR_CNT) AS M_BURR_CNT,
SUM(M_SCRATCH_CNT) AS M_SCRATCH_CNT,
SUM(M_NOT_EQUAL_MATERIAL_CNT) AS M_NOT_EQUAL_MATERIAL_CNT,
SUM(M_BAD_THICKNESS_CNT) AS M_BAD_THICK_CNT,
SUM(M_RUST_CNT) AS M_RUST_CNT,
SUM(M_HOLE_CNT) AS M_HOLE_CNT,
SUM(M_SHAPE_TRANSFORM_CNT) AS M_SHAPE_TRANSFORM_CNT,
SUM(M_UNFORMED_CNT) AS M_UNFORMED_CNT,
SUM(M_FLATNESS_CNT) AS M_FLATNESS_CNT,
SUM(M_FOREIGN_MATTER_CNT) AS M_FOREIGN_MATTER_CNT,
SUM(M_MISSING_PROCESS_CNT) AS M_MISSING_PROCESS_CNT,
SUM(M_ETC_CNT) AS M_ETC_CNT,
SUM(M_TOTAL_CNT) AS M_TOTAL_CNT,
SUM(F_HW_ASSEMBLY_CNT) AS F_HW_ASSEMBLY_CNT,
SUM(F_SPOT_WELDING_CNT) AS F_SPOT_WELDING_CNT,
SUM(F_CO2_WELDING_CNT) AS F_CO2_WELDING_CNT,
SUM(F_MISS_ASSAMBLY_CNT) AS F_MISS_ASSAMBLY_CNT,
SUM(F_FRAME_GLUE_CNT) AS F_FRAME_GLUE_CNT,
SUM(F_TAPE_SILLER_CNT) AS F_TAPE_SILLER_CNT,
SUM(F_SCATTER_CNT) AS F_SCATTER_CNT,
SUM(F_JIG_CNT) AS F_JIG_CNT,
SUM(F_PAD_CNT) AS F_PAD_CNT,
SUM(F_TOOL_CNT) AS F_TOOL_CNT,
SUM(F_FULL_PROOF_CNT) AS F_FULL_PROOF_CNT,
SUM(F_WORKABILITY_CNT) AS F_WORKABILITY_CNT,
SUM(F_ETC_CNT) AS F_ETC_CNT,
SUM(F_TOTAL_CNT) AS F_TOTAL_CNT,
SUM(E_PAD_CNT) AS E_PAD_CNT,
SUM(E_HW_CNT) AS E_HW_CNT,
SUM(E_PLT_CNT) AS E_PLT_CNT,
SUM(E_FRAME_GLUE_CNT) AS E_FRAME_GLUE_CNT,
SUM(E_TAPE_SILLER_CNT) AS E_TAPE_SILLER_CNT,
SUM(E_WORKER_CNT) AS E_WORKER_CNT,
SUM(E_STABILITY_CNT) AS E_STABILITY_CNT,
SUM(E_TOOL_CNT) AS E_TOOL_CNT,
SUM(E_ETC_CNT) AS E_ETC_CNT,
SUM(E_TOTAL_CNT) AS E_TOTAL_CNT
FROM (
SELECT
PROBLEM.OBJID,
PROBLEM.TARGET_OBJID,
PROBLEM.STATUS,
PROBLEM.PART_NO,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '구조' THEN 1 ELSE 0 END AS D_STRUCTURE_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '수밀' THEN 1 ELSE 0 END AS D_WATERTIGHTNESS_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = 'NVH' THEN 1 ELSE 0 END AS D_NVH_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = 'DATA' THEN 1 ELSE 0 END AS D_DATA_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '생산성' THEN 1 ELSE 0 END AS D_PRODUCTIVITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '조립성' THEN 1 ELSE 0 END AS D_ASSEMBLABILITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '성형성' THEN 1 ELSE 0 END AS D_FORMABILITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '작업성' THEN 1 ELSE 0 END AS D_WORKABILITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '원가절감' THEN 1 ELSE 0 END AS D_COST_REDUCTION_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' AND PROBLEM.TYPE2 = '기타' THEN 1 ELSE 0 END AS D_ETC_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'DESIGN' THEN 1 ELSE 0 END AS D_TOTAL_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '크랙, 네크' THEN 1 ELSE 0 END AS M_CRACK_NECK_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '주름' THEN 1 ELSE 0 END AS M_WRINKLE_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '버(BURR)' THEN 1 ELSE 0 END AS M_BURR_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '스크래치' THEN 1 ELSE 0 END AS M_SCRATCH_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '이종재질' THEN 1 ELSE 0 END AS M_NOT_EQUAL_MATERIAL_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '두께불량' THEN 1 ELSE 0 END AS M_BAD_THICKNESS_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '녹(RUST)' THEN 1 ELSE 0 END AS M_RUST_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '홀(HOLE)' THEN 1 ELSE 0 END AS M_HOLE_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '형상변형' THEN 1 ELSE 0 END AS M_SHAPE_TRANSFORM_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '미성형' THEN 1 ELSE 0 END AS M_UNFORMED_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '평탄도' THEN 1 ELSE 0 END AS M_FLATNESS_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '이물질' THEN 1 ELSE 0 END AS M_FOREIGN_MATTER_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '공정누락' THEN 1 ELSE 0 END AS M_MISSING_PROCESS_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' AND PROBLEM.TYPE2 = '기타' THEN 1 ELSE 0 END AS M_ETC_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'MOLD' THEN 1 ELSE 0 END AS M_TOTAL_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = 'HW조립' THEN 1 ELSE 0 END AS F_HW_ASSEMBLY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = 'SPOT용접' THEN 1 ELSE 0 END AS F_SPOT_WELDING_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = 'CO2용접' THEN 1 ELSE 0 END AS F_CO2_WELDING_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = '오조립' THEN 1 ELSE 0 END AS F_MISS_ASSAMBLY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = '구조용접착제' THEN 1 ELSE 0 END AS F_FRAME_GLUE_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = 'TAPE실러' THEN 1 ELSE 0 END AS F_TAPE_SILLER_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = '산포' THEN 1 ELSE 0 END AS F_SCATTER_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = '지그' THEN 1 ELSE 0 END AS F_JIG_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = 'PAD' THEN 1 ELSE 0 END AS F_PAD_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = 'TOOL' THEN 1 ELSE 0 END AS F_TOOL_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = '풀프루프' THEN 1 ELSE 0 END AS F_FULL_PROOF_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = '작업성' THEN 1 ELSE 0 END AS F_WORKABILITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' AND PROBLEM.TYPE2 = '기타' THEN 1 ELSE 0 END AS F_ETC_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'FACILITIES' THEN 1 ELSE 0 END AS F_TOTAL_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'ETC' AND PROBLEM.TYPE2 = 'PAD' THEN 1 ELSE 0 END AS E_PAD_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'ETC' AND PROBLEM.TYPE2 = 'HW' THEN 1 ELSE 0 END AS E_HW_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'ETC' AND PROBLEM.TYPE2 = 'PLT' THEN 1 ELSE 0 END AS E_PLT_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'ETC' AND PROBLEM.TYPE2 = '구조용접착제' THEN 1 ELSE 0 END AS E_FRAME_GLUE_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'ETC' AND PROBLEM.TYPE2 = 'TAPE실러' THEN 1 ELSE 0 END AS E_TAPE_SILLER_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'ETC' AND PROBLEM.TYPE2 = '작업자' THEN 1 ELSE 0 END AS E_WORKER_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'ETC' AND PROBLEM.TYPE2 = '안정성' THEN 1 ELSE 0 END AS E_STABILITY_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'ETC' AND PROBLEM.TYPE2 = 'TOOL' THEN 1 ELSE 0 END AS E_TOOL_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'ETC' AND PROBLEM.TYPE2 = '기타' THEN 1 ELSE 0 END AS E_ETC_CNT,
CASE WHEN UPPER(PROBLEM.TYPE1) = 'ETC' THEN 1 ELSE 0 END AS E_TOTAL_CNT
FROM
PMS_PROBLEM_INFO PROBLEM,
(
SELECT
PROBLEM_GROUP.OBJID
FROM PMS_PROBLEM_GROUP PROBLEM_GROUP
)PROBLEM_GROUP
WHERE PROBLEM.UNMANAGE_TYPE IS NULL
AND PROBLEM.TARGET_OBJID = PROBLEM_GROUP.OBJID
<if test="problemType != null and !''.equals(problemType)">
AND PROBLEM.UPPER(PROBLEM.TYPE1) = UPPER(#{problemType})
</if>
) GROUP BY ROLLUP(PART_NO)
)PART_PROBLEM
WHERE ATTR.SCORE IS NOT NULL
AND ATTR.RESULT IS NOT NULL
AND ATTR.TARGET_OBJID = INFO.OBJID
AND ATTR.PART_NO = PART_PROBLEM.PROBLEM_PART(+)
)TEST_INFO
) GROUP BY ROLLUP((PROD_OBJID,PROD_GROUP_OBJID))
</select>
<!-- 시작품 검사 전체 합격률 P18-->
<select id="getProtoTestTypeCompleteRatioPie" parameterType="map" resultType="map">
SELECT
AVG(WELD_RATIO) AS WELD_COMPLETE_AVG,
CASE WHEN AVG(WELD_RATIO) = 0 THEN 0 ELSE 100-AVG(WELD_RATIO) END AS WELD_FAIL_AVG,
AVG(FRAME_RATIO) AS FRAME_COMPLETE_AVG,
CASE WHEN AVG(FRAME_RATIO) = 0 THEN 0 ELSE 100-AVG(FRAME_RATIO) END AS FRAME_FAIL_AVG
FROM(
SELECT
OEM_OBJID,
CAR_OBJID,
PROD_OBJID,
PROD_GROUP_OBJID,
PART_NO,
SUM(WELD_CNT) AS WELD_TEST_ROUND,
SUM(FRAME_CNT) AS FRAME_TEST_ROUND,
CASE WHEN SUM(WELD_CNT) = 0 THEN 0 ELSE ROUND((1 / SUM(WELD_CNT))*100, 1) END AS WELD_RATIO,
CASE WHEN SUM(FRAME_CNT) = 0 THEN 0 ELSE ROUND((1 / SUM(FRAME_CNT))*100, 1) END AS FRAME_RATIO
FROM(
SELECT A.*
FROM(
SELECT
INFO.OEM_OBJID,
INFO.CAR_OBJID,
INFO.PROD_OBJID,
INFO.PROD_GROUP_OBJID,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
RESULT.PART_NO,
CASE WHEN UPPER(RESULT.RESULT_TYPE) = 'WELD' THEN 1 ELSE 0 END AS WELD_CNT,
CASE WHEN UPPER(RESULT.RESULT_TYPE) = 'FRAME' THEN 1 ELSE 0 END AS FRAME_CNT
FROM
PMS_PROTO_TEST_RESULT_INFO RESULT,
PMS_PROTO_TEST_INFO INFO
WHERE RESULT.TARGET_OBJID = INFO.OBJID
<if test="oemObjId != null and !''.equals(oemObjId)">
AND INFO.OEM_OBJID = #{oemObjId}
</if>
<if test="carObjId != null and !''.equals(carObjId)">
AND INFO.CAR_OBJID = #{carObjId}
</if>
<if test="productGroupObjId != null and !''.equals(productGroupObjId)">
AND INFO.PROD_GROUP_OBJID = #{productGroupObjId}
</if>
)A WHERE 1=1
<if test="userName != null and !''.equals(userName)">
AND UPPER(A.USER_NAME) LIKE UPPER('%${userName}%')
</if>
)GROUP BY OEM_OBJID,CAR_OBJID,PROD_GROUP_OBJID,PROD_OBJID,PART_NO
)
</select>
<!-- 시작품 검사 고객사,차종,제품별 합격률 P18-->
<select id="getProtoTestProductCompleteRatioList" parameterType="map" resultType="map">
SELECT
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = OEM_OBJID) AS OEM_NAME,
OEM_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_CODE,
CAR_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
PROD_GROUP_OBJID,
SUM(WELD_TEST_ROUND) MAX_WELD_ROUND,
SUM(FRAME_TEST_ROUND) MAX_FRAME_ROUND,
AVG(WELD_RATIO) AS WELD_AVG,
AVG(FRAME_RATIO) AS FRAME_AVG
FROM(
SELECT
OEM_OBJID,
CAR_OBJID,
PROD_OBJID,
PROD_GROUP_OBJID,
PART_NO,
SUM(WELD_CNT) AS WELD_TEST_ROUND,
SUM(FRAME_CNT) AS FRAME_TEST_ROUND,
CASE WHEN SUM(WELD_CNT) = 0 THEN 0 ELSE ROUND((1 / SUM(WELD_CNT))*100, 1) END AS WELD_RATIO,
CASE WHEN SUM(FRAME_CNT) = 0 THEN 0 ELSE ROUND((1 / SUM(FRAME_CNT))*100, 1) END AS FRAME_RATIO
FROM(
SELECT A.*
FROM(
SELECT
INFO.OEM_OBJID,
INFO.CAR_OBJID,
INFO.PROD_OBJID,
INFO.PROD_GROUP_OBJID,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
RESULT.PART_NO,
CASE WHEN UPPER(RESULT.RESULT_TYPE) = 'WELD' THEN 1 ELSE 0 END AS WELD_CNT,
CASE WHEN UPPER(RESULT.RESULT_TYPE) = 'FRAME' THEN 1 ELSE 0 END AS FRAME_CNT
FROM
PMS_PROTO_TEST_RESULT_INFO RESULT,
PMS_PROTO_TEST_INFO INFO
WHERE RESULT.TARGET_OBJID = INFO.OBJID
<if test="oemObjId != null and !''.equals(oemObjId)">
AND INFO.OEM_OBJID = #{oemObjId}
</if>
<if test="carObjId != null and !''.equals(carObjId)">
AND INFO.CAR_OBJID = #{carObjId}
</if>
<if test="productGroupObjId != null and !''.equals(productGroupObjId)">
AND INFO.PROD_GROUP_OBJID = #{productGroupObjId}
</if>
)A WHERE 1=1
<if test="userName != null and !''.equals(userName)">
AND UPPER(USER_NAME) LIKE UPPER('%${userName}%')
</if>
)GROUP BY OEM_OBJID,CAR_OBJID,PROD_GROUP_OBJID,PROD_OBJID,PART_NO
)GROUP BY OEM_OBJID,CAR_OBJID,PROD_GROUP_OBJID
</select>
<!-- 시작품 입고현황 전체 입고율 P18-->
<select id="getProtoStockTotalReceiveRatioPie" parameterType="map" resultType="map">
SELECT
STOCK_RATIO,
READY_STOCK_RATIO,
CASE WHEN STOCK_RATIO = 0 THEN 0 ELSE 100-STOCK_RATIO-READY_STOCK_RATIO END AS UN_STOCK_RATIO
FROM(
SELECT
SUM(TOTAL_REQUIRED),
SUM(RECEIVE_COUNT),
SUM(DELAY_RECEIVE_COUNT),
SUM(READY_RECEIVE_COUNT),
CASE WHEN SUM(TOTAL_REQUIRED) = 0 THEN 0 ELSE ROUND((SUM(READY_RECEIVE_COUNT) / SUM(TOTAL_REQUIRED))*100, 1) END AS READY_STOCK_RATIO,
CASE WHEN SUM(TOTAL_REQUIRED) = 0 THEN 0 ELSE ROUND((SUM(RECEIVE_COUNT) / SUM(TOTAL_REQUIRED))*100, 1) END AS STOCK_RATIO
FROM(
SELECT
INFO.OEM_OBJID,
INFO.CAR_OBJID,
INFO.PROD_OBJID,
INFO.PROD_GROUP_OBJID,
STOCK.PART_NO,
STOCK.TOTAL_REQUIRED,
STOCK.RECEIVE_COUNT,
STOCK.DELAY_RECEIVE_COUNT,
(STOCK.TOTAL_REQUIRED - STOCK.RECEIVE_COUNT) AS READY_RECEIVE_COUNT
FROM
PMS_PROTO_STOCK_REL_PART_INFO STOCK,
PMS_PROTO_STOCK_INFO INFO
WHERE STOCK.TARGET_OBJID = INFO.OBJID
<if test="oemObjId != null and !''.equals(oemObjId)">
AND INFO.OEM_OBJID = #{oemObjId}
</if>
<if test="carObjId2 != null and !''.equals(carObjId2)">
AND INFO.CAR_OBJID = #{carObjId}
</if>
<if test="productGroupObjId != null and !''.equals(productGroupObjId)">
AND INFO.PROD_GROUP_OBJID = #{productGroupObjId}
</if>
)
)
</select>
<!-- 시작품 입고현황 고객사,차종,제품별 입고율 P18-->
<select id="getProtoStockProductReceiveRatioList" parameterType="map" resultType="map">
SELECT
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = OEM_OBJID) AS OEM_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = CAR_OBJID) AS CAR_CODE,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
OEM_OBJID,
CAR_OBJID,
PROD_GROUP_OBJID,
SUM(TOTAL_REQUIRED) AS SUM_TOTAL_REQUIRED,
SUM(RECEIVE_COUNT) AS SUM_RECEIVE_COUNT,
SUM(DELAY_RECEIVE_COUNT) AS SUM_DELAY_RECEIVE_COUNT,
SUM(READY_RECEIVE_COUNT) AS SUM_READY_RECEIVE_COUNT,
CASE WHEN SUM(TOTAL_REQUIRED) = 0 THEN 0 ELSE ROUND((SUM(RECEIVE_COUNT) / SUM(TOTAL_REQUIRED))*100, 1) END AS STOCK_RATIO
FROM(
SELECT
INFO.OEM_OBJID,
INFO.CAR_OBJID,
INFO.PROD_OBJID,
INFO.PROD_GROUP_OBJID,
STOCK.PART_NO,
STOCK.TOTAL_REQUIRED,
STOCK.RECEIVE_COUNT,
STOCK.DELAY_RECEIVE_COUNT,
(STOCK.TOTAL_REQUIRED - STOCK.RECEIVE_COUNT) AS READY_RECEIVE_COUNT
FROM
PMS_PROTO_STOCK_REL_PART_INFO STOCK,
PMS_PROTO_STOCK_INFO INFO
WHERE STOCK.TARGET_OBJID = INFO.OBJID
<if test="oemObjId != null and !''.equals(oemObjId)">
AND INFO.OEM_OBJID = #{oemObjId}
</if>
<if test="carObjId != null and !''.equals(carObjId)">
AND INFO.CAR_OBJID = #{carObjId}
</if>
<if test="productObjId != null and !''.equals(productObjId)">
AND INFO.PROD_OBJID = #{productObjId}
</if>
<if test="productGroupObjId != null and !''.equals(productGroupObjId)">
AND INFO.PROD_GROUP_OBJID = #{productGroupObjId}
</if>
)GROUP BY OEM_OBJID,CAR_OBJID,PROD_GROUP_OBJID
</select>
<!-- DFMEA 단계1 별 RPN 현황 -->
<select id="getDFMEAStep1RPNStatus" parameterType="map" resultType="map">
SELECT
STEP1
,STEP1_SEQ
,STEP1_CODE
,SUM(CASE WHEN RPN <![CDATA[ < ]]> 50 THEN 1 ELSE 0 END) AS RANGE_50_UNDER_CNT
,SUM(CASE WHEN RPN <![CDATA[ >= ]]> 50 AND RPN <![CDATA[ <= ]]> 79 THEN 1 ELSE 0 END) AS RANGE_50_70_CNT
,SUM(CASE WHEN RPN <![CDATA[ >= ]]> 80 AND RPN <![CDATA[ <= ]]> 99 THEN 1 ELSE 0 END) AS RANGE_80_99_CNT
,SUM(CASE WHEN RPN <![CDATA[ >= ]]> 100 AND RPN <![CDATA[ <= ]]> 150 THEN 1 ELSE 0 END) AS RANGE_100_150_CNT
,SUM(CASE WHEN RPN <![CDATA[ > ]]> 150 THEN 1 ELSE 0 END) AS RANGE_150_OVER_CNT
FROM (
SELECT
CASE
WHEN UPPER(ATTR.STEP1) = 'DESIGN' THEN '설계'
WHEN UPPER(ATTR.STEP1) = 'DEVELOP' THEN '개발'
WHEN UPPER(ATTR.STEP1) = 'PRODUCTION' THEN '양산'
ELSE ATTR.STEP1 END AS STEP1
,CASE
WHEN UPPER(ATTR.STEP1) = 'DESIGN' THEN 1
WHEN UPPER(ATTR.STEP1) = 'DEVELOP' THEN 2
WHEN UPPER(ATTR.STEP1) = 'PRODUCTION' THEN 3
ELSE 0
END AS STEP1_SEQ
,ATTR.STEP1 AS STEP1_CODE
,((ATTR.SEVERITY_SCORE*ATTR.INCIDENCE_SCORE)*ATTR.DETECT_SCORE) AS RPN
FROM
PMS_DFMEA_CHANGE_ATTR ATTR,
PMS_DFMEA_INFO INFO,
PMS_DFMEA_BASE_INFO BASE_INFO
WHERE ATTR.STEP1 IS NOT NULL
AND ATTR.TARGET_OBJID = INFO.OBJID
AND INFO.TARGET_OBJID = BASE_INFO.OBJID
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_INFO.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_INFO.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND BASE_INFO.PROD_GROUP_OBJID = #{search_productGroupObjId}
</if>
)GROUP BY STEP1,STEP1_CODE,STEP1_SEQ ORDER BY STEP1_SEQ
</select>
<!-- DFMEA 단계2 별 RPN 현황 -->
<select id="getDFMEAStep2RPNStatus" parameterType="map" resultType="map">
SELECT
STEP1
,STEP1_SEQ
,STEP1_CODE
,STEP2
,STEP2_SEQ
,SUM(CASE WHEN RPN <![CDATA[ < ]]> 50 THEN 1 ELSE 0 END) AS RANGE_50_UNDER_CNT
,SUM(CASE WHEN RPN <![CDATA[ >= ]]> 50 AND RPN <![CDATA[ <= ]]> 79 THEN 1 ELSE 0 END) AS RANGE_50_70_CNT
,SUM(CASE WHEN RPN <![CDATA[ >= ]]> 80 AND RPN <![CDATA[ <= ]]> 99 THEN 1 ELSE 0 END) AS RANGE_80_99_CNT
,SUM(CASE WHEN RPN <![CDATA[ >= ]]> 100 AND RPN <![CDATA[ <= ]]> 150 THEN 1 ELSE 0 END) AS RANGE_100_150_CNT
,SUM(CASE WHEN RPN <![CDATA[ > ]]> 150 THEN 1 ELSE 0 END) AS RANGE_150_OVER_CNT
FROM (
SELECT
CASE
WHEN UPPER(ATTR.STEP1) = 'DESIGN' THEN '설계'
WHEN UPPER(ATTR.STEP1) = 'DEVELOP' THEN '개발'
WHEN UPPER(ATTR.STEP1) = 'PRODUCTION' THEN '양산'
ELSE ATTR.STEP1 END AS STEP1
,CASE
WHEN UPPER(ATTR.STEP1) = 'DESIGN' THEN 1
WHEN UPPER(ATTR.STEP1) = 'DEVELOP' THEN 2
WHEN UPPER(ATTR.STEP1) = 'PRODUCTION' THEN 3
ELSE 0
END AS STEP1_SEQ
,ATTR.STEP1 AS STEP1_CODE
,ATTR.STEP2
,CASE
WHEN UPPER(ATTR.STEP2) = 'L1' THEN 1
WHEN UPPER(ATTR.STEP2) = 'L2' THEN 2
WHEN UPPER(ATTR.STEP2) = 'L3' THEN 3
WHEN UPPER(ATTR.STEP2) = 'L4' THEN 4
WHEN UPPER(ATTR.STEP2) = 'INSTL' THEN 5
WHEN UPPER(ATTR.STEP2) = '초도' THEN 6
WHEN UPPER(ATTR.STEP2) = 'S/B' THEN 7
WHEN UPPER(ATTR.STEP2) = 'P1' THEN 8
WHEN UPPER(ATTR.STEP2) = 'P2' THEN 9
WHEN UPPER(ATTR.STEP2) = 'M' THEN 10
WHEN UPPER(ATTR.STEP2) = '양산' THEN 11
ELSE 0
END AS STEP2_SEQ
,((ATTR.SEVERITY_SCORE*ATTR.INCIDENCE_SCORE)*ATTR.DETECT_SCORE) AS RPN
FROM
PMS_DFMEA_CHANGE_ATTR ATTR,
PMS_DFMEA_INFO INFO,
PMS_DFMEA_BASE_INFO BASE_INFO
WHERE ATTR.STEP1 IS NOT NULL
AND ATTR.TARGET_OBJID = INFO.OBJID
AND INFO.TARGET_OBJID = BASE_INFO.OBJID
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_INFO.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_INFO.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND BASE_INFO.PROD_GROUP_OBJID = #{search_productGroupObjId}
</if>
)GROUP BY STEP1,STEP1_SEQ,STEP1_CODE,STEP2,STEP2_SEQ ORDER BY STEP1_SEQ,STEP2_SEQ
</select>
<!-- 설계 체크리스트 반영율 현황 -->
<select id="getDesignCheckListApplyChartInfo" parameterType="map" resultType="map">
SELECT
SUM(L1_APPLY_CNT) AS L1_APPLY_CNT,
CASE WHEN SUM(INFO.CNT) != 0 THEN ROUND(SUM(L1_APPLY_CNT)/SUM(INFO.CNT) * 100) ELSE SUM(INFO.CNT) END AS L1_APPLY_RATIO,
SUM(L2_APPLY_CNT) AS L2_APPLY_CNT,
CASE WHEN SUM(INFO.CNT) != 0 THEN ROUND(SUM(L2_APPLY_CNT)/SUM(INFO.CNT) * 100) ELSE SUM(INFO.CNT) END AS L2_APPLY_RATIO,
SUM(L3_APPLY_CNT) AS L3_APPLY_CNT,
CASE WHEN SUM(INFO.CNT) != 0 THEN ROUND(SUM(L3_APPLY_CNT)/SUM(INFO.CNT) * 100) ELSE SUM(INFO.CNT) END AS L3_APPLY_RATIO,
SUM(L4_APPLY_CNT) AS L4_APPLY_CNT,
CASE WHEN SUM(INFO.CNT) != 0 THEN ROUND(SUM(L4_APPLY_CNT)/SUM(INFO.CNT) * 100) ELSE SUM(INFO.CNT) END AS L4_APPLY_RATIO,
SUM(INSTL_APPLY_CNT) AS INSTL_APPLY_CNT,
CASE WHEN SUM(INFO.CNT) != 0 THEN ROUND(SUM(INSTL_APPLY_CNT)/SUM(INFO.CNT) * 100) ELSE SUM(INFO.CNT) END AS INSTL_APPLY_RATIO,
SUM(EO_APPLY_CNT) AS EO_APPLY_CNT,
CASE WHEN SUM(INFO.CNT) != 0 THEN ROUND(SUM(EO_APPLY_CNT)/SUM(INFO.CNT) * 100) ELSE SUM(INFO.CNT) END AS EO_APPLY_RATIO,
SUM(INFO.CNT) AS TOTAL_CNT
FROM(
SELECT
CASE WHEN UPPER(INFO.RATING_L1) = 'APPLY' THEN 1 ELSE 0 END L1_APPLY_CNT,
CASE WHEN UPPER(INFO.RATING_L1) = 'REVIEW' THEN 1 ELSE 0 END L1_REVIEW_CNT,
CASE WHEN UPPER(INFO.RATING_L1) = 'UNAPPLY' THEN 1 ELSE 0 END L1_UNAPPLY_CNT,
CASE WHEN UPPER(INFO.RATING_L2) = 'APPLY' THEN 1 ELSE 0 END L2_APPLY_CNT,
CASE WHEN UPPER(INFO.RATING_L2) = 'REVIEW' THEN 1 ELSE 0 END L2_REVIEW_CNT,
CASE WHEN UPPER(INFO.RATING_L2) = 'UNAPPLY' THEN 1 ELSE 0 END L2_UNAPPLY_CNT,
CASE WHEN UPPER(INFO.RATING_L3) = 'APPLY' THEN 1 ELSE 0 END L3_APPLY_CNT,
CASE WHEN UPPER(INFO.RATING_L3) = 'REVIEW' THEN 1 ELSE 0 END L3_REVIEW_CNT,
CASE WHEN UPPER(INFO.RATING_L3) = 'UNAPPLY' THEN 1 ELSE 0 END L3_UNAPPLY_CNT,
CASE WHEN UPPER(INFO.RATING_L4) = 'APPLY' THEN 1 ELSE 0 END L4_APPLY_CNT,
CASE WHEN UPPER(INFO.RATING_L4) = 'REVIEW' THEN 1 ELSE 0 END L4_REVIEW_CNT,
CASE WHEN UPPER(INFO.RATING_L4) = 'UNAPPLY' THEN 1 ELSE 0 END L4_UNAPPLY_CNT,
CASE WHEN UPPER(INFO.RATING_INSTL) = 'APPLY' THEN 1 ELSE 0 END INSTL_APPLY_CNT,
CASE WHEN UPPER(INFO.RATING_INSTL) = 'REVIEW' THEN 1 ELSE 0 END INSTL_REVIEW_CNT,
CASE WHEN UPPER(INFO.RATING_INSTL) = 'UNAPPLY' THEN 1 ELSE 0 END INSTL_UNAPPLY_CNT,
CASE WHEN UPPER(INFO.RATING_EO) = 'APPLY' THEN 1 ELSE 0 END EO_APPLY_CNT,
CASE WHEN UPPER(INFO.RATING_EO) = 'REVIEW' THEN 1 ELSE 0 END EO_REVIEW_CNT,
CASE WHEN UPPER(INFO.RATING_EO) = 'UNAPPLY' THEN 1 ELSE 0 END EO_UNAPPLY_CNT,
1 AS CNT
FROM
PMS_DESIGN_CHK_LIST_INFO INFO,
PMS_DESIGN_CHK_LIST_BASE_INFO BASE_INFO
WHERE INFO.TARGET_OBJID = BASE_INFO.OBJID
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_INFO.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_INFO.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND BASE_INFO.PRODUCT_GROUP_OBJID = #{search_productGroupObjId}
</if>
)INFO
</select>
<!-- 설계 체크리스트 반영율 현황 -->
<select id="getDesignCheckListApplyListInfo" parameterType="map" resultType="map">
SELECT
INFO.GUBUN,
SUM(INFO.APPLY_CNT) AS APPLY_CNT,
SUM(INFO.REVIEW_CNT) AS REVIEW_CNT,
SUM(INFO.UNAPPLY_CNT) AS UNAPPLY_CNT,
SUM(+INFO.APPLY_CNT+INFO.REVIEW_CNT+INFO.UNAPPLY_CNT) AS TOTAL_CNT,
CASE WHEN SUM(INFO.APPLY_CNT) = 0 THEN 0 ELSE ROUND((SUM(INFO.APPLY_CNT) / SUM(INFO.APPLY_CNT+INFO.REVIEW_CNT+INFO.UNAPPLY_CNT))*100,1) END AS RATIO
FROM (
SELECT
'1_L1' AS GUBUN
, COUNT(CASE WHEN UPPER(INFO.RATING_L1) = 'APPLY' THEN 1 ELSE NULL END) AS APPLY_CNT
, COUNT(CASE WHEN UPPER(INFO.RATING_L1) = 'REVIEW' THEN 1 ELSE NULL END) AS REVIEW_CNT
, COUNT(CASE WHEN UPPER(INFO.RATING_L1) = 'UNAPPLY' THEN 1 ELSE NULL END) AS UNAPPLY_CNT
FROM
PMS_DESIGN_CHK_LIST_INFO INFO,
PMS_DESIGN_CHK_LIST_BASE_INFO BASE_INFO
WHERE INFO.TARGET_OBJID = BASE_INFO.OBJID
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_INFO.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_INFO.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND BASE_INFO.PRODUCT_GROUP_OBJID = #{search_productGroupObjId}
</if>
UNION ALL
SELECT
'2_L2' AS GUBUN
, COUNT(CASE WHEN UPPER(INFO.RATING_L2) = 'APPLY' THEN 1 ELSE NULL END) AS APPLY_CNT
, COUNT(CASE WHEN UPPER(INFO.RATING_L2) = 'REVIEW' THEN 1 ELSE NULL END) AS REVIEW_CNT
, COUNT(CASE WHEN UPPER(INFO.RATING_L2) = 'UNAPPLY' THEN 1 ELSE NULL END) AS UNAPPLY_CNT
FROM
PMS_DESIGN_CHK_LIST_INFO INFO,
PMS_DESIGN_CHK_LIST_BASE_INFO BASE_INFO
WHERE INFO.TARGET_OBJID = BASE_INFO.OBJID
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_INFO.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_INFO.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND BASE_INFO.PRODUCT_GROUP_OBJID = #{search_productGroupObjId}
</if>
UNION ALL
SELECT
'3_L3' AS GUBUN
, COUNT(CASE WHEN UPPER(INFO.RATING_L3) = 'APPLY' THEN 1 ELSE NULL END) AS APPLY_CNT
, COUNT(CASE WHEN UPPER(INFO.RATING_L3) = 'REVIEW' THEN 1 ELSE NULL END) AS REVIEW_CNT
, COUNT(CASE WHEN UPPER(INFO.RATING_L3) = 'UNAPPLY' THEN 1 ELSE NULL END) AS UNAPPLY_CNT
FROM
PMS_DESIGN_CHK_LIST_INFO INFO,
PMS_DESIGN_CHK_LIST_BASE_INFO BASE_INFO
WHERE INFO.TARGET_OBJID = BASE_INFO.OBJID
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_INFO.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_INFO.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND BASE_INFO.PRODUCT_GROUP_OBJID = #{search_productGroupObjId}
</if>
UNION ALL
SELECT
'4_L4' AS GUBUN
, COUNT(CASE WHEN UPPER(INFO.RATING_L4) = 'APPLY' THEN 1 ELSE NULL END) AS APPLY_CNT
, COUNT(CASE WHEN UPPER(INFO.RATING_L4) = 'REVIEW' THEN 1 ELSE NULL END) AS REVIEW_CNT
, COUNT(CASE WHEN UPPER(INFO.RATING_L4) = 'UNAPPLY' THEN 1 ELSE NULL END) AS UNAPPLY_CNT
FROM
PMS_DESIGN_CHK_LIST_INFO INFO,
PMS_DESIGN_CHK_LIST_BASE_INFO BASE_INFO
WHERE INFO.TARGET_OBJID = BASE_INFO.OBJID
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_INFO.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_INFO.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND BASE_INFO.PRODUCT_GROUP_OBJID = #{search_productGroupObjId}
</if>
UNION ALL
SELECT
'5_INSTL' AS GUBUN
, COUNT(CASE WHEN UPPER(INFO.RATING_INSTL) = 'APPLY' THEN 1 ELSE NULL END) AS APPLY_CNT
, COUNT(CASE WHEN UPPER(INFO.RATING_INSTL) = 'REVIEW' THEN 1 ELSE NULL END) AS REVIEW_CNT
, COUNT(CASE WHEN UPPER(INFO.RATING_INSTL) = 'UNAPPLY' THEN 1 ELSE NULL END) AS UNAPPLY_CNT
FROM
PMS_DESIGN_CHK_LIST_INFO INFO,
PMS_DESIGN_CHK_LIST_BASE_INFO BASE_INFO
WHERE INFO.TARGET_OBJID = BASE_INFO.OBJID
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_INFO.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_INFO.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND BASE_INFO.PRODUCT_GROUP_OBJID = #{search_productGroupObjId}
</if>
UNION ALL
SELECT
'6_EO' AS GUBUN
, COUNT(CASE WHEN UPPER(INFO.RATING_EO) = 'APPLY' THEN 1 ELSE NULL END) AS APPLY_CNT
, COUNT(CASE WHEN UPPER(INFO.RATING_EO) = 'REVIEW' THEN 1 ELSE NULL END) AS REVIEW_CNT
, COUNT(CASE WHEN UPPER(INFO.RATING_EO) = 'UNAPPLY' THEN 1 ELSE NULL END) AS UNAPPLY_CNT
FROM
PMS_DESIGN_CHK_LIST_INFO INFO,
PMS_DESIGN_CHK_LIST_BASE_INFO BASE_INFO
WHERE INFO.TARGET_OBJID = BASE_INFO.OBJID
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_INFO.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_INFO.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND BASE_INFO.PRODUCT_GROUP_OBJID = #{search_productGroupObjId}
</if>
)INFO
WHERE 1=1
GROUP BY ROLLUP(INFO.GUBUN) ORDER BY INFO.GUBUN NULLS FIRST
</select>
<select id="getDFMERPNStatusInfo" parameterType="map" resultType="map">
SELECT
SUM(L1_HIGH_SCORE) AS L1_HIGH_SCORE,
SUM(L2_HIGH_SCORE) AS L2_HIGH_SCORE,
SUM(L3_HIGH_SCORE) AS L3_HIGH_SCORE,
SUM(L4_HIGH_SCORE) AS L4_HIGH_SCORE,
SUM(INSTL_HIGH_SCORE) AS INSTL_HIGH_SCORE,
SUM(SB_HIGH_SCORE) AS SB_HIGH_SCORE,
SUM(P1_HIGH_SCORE) AS P1_HIGH_SCORE,
SUM(P2_HIGH_SCORE) AS P2_HIGH_SCORE,
SUM(M_HIGH_SCORE) AS M_HIGH_SCORE,
SUM(SOP_HIGH_SCORE) AS SOP_HIGH_SCORE,
SUM(L1_WORSE_CNT) AS L1_WORSE_CNT,
SUM(L2_WORSE_CNT) AS L2_WORSE_CNT,
SUM(L3_WORSE_CNT) AS L3_WORSE_CNT,
SUM(L4_WORSE_CNT) AS L4_WORSE_CNT,
SUM(INSTL_WORSE_CNT) AS INSTL_WORSE_CNT,
SUM(SB_WORSE_CNT) AS SB_WORSE_CNT,
SUM(P1_WORSE_CNT) AS P1_WORSE_CNT,
SUM(P2_WORSE_CNT) AS P2_WORSE_CNT,
SUM(M_WORSE_CNT) AS M_WORSE_CNT,
SUM(SOP_WORSE_CNT) AS SOP_WORSE_CNT,
SUM(L1_IMPROV_CNT) AS L1_IMPROV_CNT,
SUM(L2_IMPROV_CNT) AS L2_IMPROV_CNT,
SUM(L3_IMPROV_CNT) AS L3_IMPROV_CNT,
SUM(L4_IMPROV_CNT) AS L4_IMPROV_CNT,
SUM(INSTL_IMPROV_CNT) AS INSTL_IMPROV_CNT,
SUM(SB_IMPROV_CNT) AS SB_IMPROV_CNT,
SUM(P1_IMPROV_CNT) AS P1_IMPROV_CNT,
SUM(P2_IMPROV_CNT) AS P2_IMPROV_CNT,
SUM(M_IMPROV_CNT) AS M_IMPROV_CNT,
SUM(SOP_IMPROV_CNT) AS SOP_IMPROV_CNT,
SUM(L1_KEEP_CNT) AS L1_KEEP_CNT,
SUM(L2_KEEP_CNT) AS L2_KEEP_CNT,
SUM(L3_KEEP_CNT) AS L3_KEEP_CNT,
SUM(L4_KEEP_CNT) AS L4_KEEP_CNT,
SUM(INSTL_KEEP_CNT) AS INSTL_KEEP_CNT,
SUM(SB_KEEP_CNT) AS SB_KEEP_CNT,
SUM(P1_KEEP_CNT) AS P1_KEEP_CNT,
SUM(P2_KEEP_CNT) AS P2_KEEP_CNT,
SUM(M_KEEP_CNT) AS M_KEEP_CNT,
SUM(SOP_KEEP_CNT) AS SOP_KEEP_CNT,
SUM(L1_EMPTY_CNT) AS L1_EMPTY_CNT,
SUM(L2_EMPTY_CNT) AS L2_EMPTY_CNT,
SUM(L3_EMPTY_CNT) AS L3_EMPTY_CNT,
SUM(L4_EMPTY_CNT) AS L4_EMPTY_CNT,
SUM(INSTL_EMPTY_CNT) AS INSTL_EMPTY_CNT,
SUM(SB_EMPTY_CNT) AS SB_EMPTY_CNT,
SUM(P1_EMPTY_CNT) AS P1_EMPTY_CNT,
SUM(P2_EMPTY_CNT) AS P2_EMPTY_CNT,
SUM(M_EMPTY_CNT) AS M_EMPTY_CNT,
SUM(SOP_EMPTY_CNT) AS SOP_EMPTY_CNT,
ROUND((SUM(L1_IMPROV_CNT) / SUM(CNT))*100, 1) AS L1_RATIO,
ROUND((SUM(L2_IMPROV_CNT) / SUM(CNT))*100, 1) AS L2_RATIO,
ROUND((SUM(L3_IMPROV_CNT) / SUM(CNT))*100, 1) AS L3_RATIO,
ROUND((SUM(L4_IMPROV_CNT) / SUM(CNT))*100, 1) AS L4_RATIO,
ROUND((SUM(INSTL_IMPROV_CNT) / SUM(CNT))*100, 1) AS INSTL_RATIO,
ROUND((SUM(SB_IMPROV_CNT) / SUM(CNT))*100, 1) AS SB_RATIO,
ROUND((SUM(P1_IMPROV_CNT) / SUM(CNT))*100, 1) AS P1_RATIO,
ROUND((SUM(P2_IMPROV_CNT) / SUM(CNT))*100, 1) AS P2_RATIO,
ROUND((SUM(M_IMPROV_CNT) / SUM(CNT))*100, 1) AS M_RATIO,
ROUND((SUM(SOP_IMPROV_CNT) / SUM(CNT))*100, 1) AS SOP_RATIO,
SUM(CNT) AS TOTAL_CNT
FROM(
SELECT
OBJID,
BASE_RPN,
CASE WHEN SUM(L1_RPN) <![CDATA[ > ]]> 100 THEN 1 ELSE 0 END AS L1_HIGH_SCORE,
CASE WHEN SUM(L1_RPN) <![CDATA[ > ]]> BASE_RPN AND SUM(L1_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS L1_WORSE_CNT,
CASE WHEN SUM(L1_RPN) <![CDATA[ < ]]> BASE_RPN AND SUM(L1_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS L1_IMPROV_CNT,
CASE WHEN SUM(L1_RPN) = BASE_RPN AND SUM(L1_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS L1_KEEP_CNT,
CASE WHEN SUM(L1_RPN) = 0 THEN 1 ELSE 0 END AS L1_EMPTY_CNT,
CASE WHEN SUM(L2_RPN) <![CDATA[ > ]]> 100 THEN 1 ELSE 0 END AS L2_HIGH_SCORE,
CASE WHEN SUM(L2_RPN) <![CDATA[ > ]]> SUM(L1_RPN) AND SUM(L2_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS L2_WORSE_CNT,
CASE WHEN SUM(L2_RPN) <![CDATA[ < ]]> SUM(L1_RPN) AND SUM(L2_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS L2_IMPROV_CNT,
CASE WHEN SUM(L2_RPN) = SUM(L1_RPN) AND SUM(L2_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS L2_KEEP_CNT,
CASE WHEN SUM(L2_RPN) = 0 THEN 1 ELSE 0 END AS L2_EMPTY_CNT,
CASE WHEN SUM(L3_RPN) <![CDATA[ > ]]> 100 THEN 1 ELSE 0 END AS L3_HIGH_SCORE,
CASE WHEN SUM(L3_RPN) <![CDATA[ > ]]> SUM(L2_RPN) AND SUM(L3_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS L3_WORSE_CNT,
CASE WHEN SUM(L3_RPN) <![CDATA[ < ]]> SUM(L2_RPN) AND SUM(L3_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS L3_IMPROV_CNT,
CASE WHEN SUM(L3_RPN) = SUM(L2_RPN) AND SUM(L3_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS L3_KEEP_CNT,
CASE WHEN SUM(L3_RPN) = 0 THEN 1 ELSE 0 END AS L3_EMPTY_CNT,
CASE WHEN SUM(L4_RPN) <![CDATA[ > ]]> 100 THEN 1 ELSE 0 END AS L4_HIGH_SCORE,
CASE WHEN SUM(L4_RPN) <![CDATA[ > ]]> SUM(L3_RPN) AND SUM(L4_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS L4_WORSE_CNT,
CASE WHEN SUM(L4_RPN) <![CDATA[ < ]]> SUM(L3_RPN) AND SUM(L4_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS L4_IMPROV_CNT,
CASE WHEN SUM(L4_RPN) = SUM(L3_RPN) AND SUM(L4_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS L4_KEEP_CNT,
CASE WHEN SUM(L4_RPN) = 0 THEN 1 ELSE 0 END AS L4_EMPTY_CNT,
CASE WHEN SUM(INSTL_RPN) <![CDATA[ > ]]> 100 THEN 1 ELSE 0 END AS INSTL_HIGH_SCORE,
CASE WHEN SUM(INSTL_RPN) <![CDATA[ > ]]> SUM(L4_RPN) AND SUM(INSTL_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS INSTL_WORSE_CNT,
CASE WHEN SUM(INSTL_RPN) <![CDATA[ < ]]> SUM(L4_RPN) AND SUM(INSTL_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS INSTL_IMPROV_CNT,
CASE WHEN SUM(INSTL_RPN) = SUM(L4_RPN) AND SUM(INSTL_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS INSTL_KEEP_CNT,
CASE WHEN SUM(INSTL_RPN) = 0 THEN 1 ELSE 0 END AS INSTL_EMPTY_CNT,
CASE WHEN SUM(SB_RPN) <![CDATA[ > ]]> 100 THEN 1 ELSE 0 END AS SB_HIGH_SCORE,
CASE WHEN SUM(SB_RPN) <![CDATA[ > ]]> SUM(INSTL_RPN) AND SUM(SB_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS SB_WORSE_CNT,
CASE WHEN SUM(SB_RPN) <![CDATA[ < ]]> SUM(INSTL_RPN) AND SUM(SB_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS SB_IMPROV_CNT,
CASE WHEN SUM(SB_RPN) = SUM(INSTL_RPN) AND SUM(SB_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS SB_KEEP_CNT,
CASE WHEN SUM(SB_RPN) = 0 THEN 1 ELSE 0 END AS SB_EMPTY_CNT,
CASE WHEN SUM(P1_RPN) <![CDATA[ > ]]> 100 THEN 1 ELSE 0 END AS P1_HIGH_SCORE,
CASE WHEN SUM(P1_RPN) <![CDATA[ > ]]> SUM(SB_RPN) AND SUM(P1_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS P1_WORSE_CNT,
CASE WHEN SUM(P1_RPN) <![CDATA[ < ]]> SUM(SB_RPN) AND SUM(P1_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS P1_IMPROV_CNT,
CASE WHEN SUM(P1_RPN) = SUM(SB_RPN) AND SUM(P1_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS P1_KEEP_CNT,
CASE WHEN SUM(P1_RPN) = 0 THEN 1 ELSE 0 END AS P1_EMPTY_CNT,
CASE WHEN SUM(P2_RPN) <![CDATA[ > ]]> 100 THEN 1 ELSE 0 END AS P2_HIGH_SCORE,
CASE WHEN SUM(P2_RPN) <![CDATA[ > ]]> SUM(P1_RPN) AND SUM(P2_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS P2_WORSE_CNT,
CASE WHEN SUM(P2_RPN) <![CDATA[ < ]]> SUM(P1_RPN) AND SUM(P2_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS P2_IMPROV_CNT,
CASE WHEN SUM(P2_RPN) = SUM(P1_RPN) AND SUM(P2_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS P2_KEEP_CNT,
CASE WHEN SUM(P2_RPN) = 0 THEN 1 ELSE 0 END AS P2_EMPTY_CNT,
CASE WHEN SUM(M_RPN) <![CDATA[ > ]]> 100 THEN 1 ELSE 0 END AS M_HIGH_SCORE,
CASE WHEN SUM(M_RPN) <![CDATA[ > ]]> SUM(P2_RPN) AND SUM(M_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS M_WORSE_CNT,
CASE WHEN SUM(M_RPN) <![CDATA[ < ]]> SUM(P2_RPN) AND SUM(M_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS M_IMPROV_CNT,
CASE WHEN SUM(M_RPN) = SUM(P2_RPN) AND SUM(M_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS M_KEEP_CNT,
CASE WHEN SUM(M_RPN) = 0 THEN 1 ELSE 0 END AS M_EMPTY_CNT,
CASE WHEN SUM(SOP_RPN) <![CDATA[ > ]]> 100 THEN 1 ELSE 0 END AS SOP_HIGH_SCORE,
CASE WHEN SUM(SOP_RPN) <![CDATA[ > ]]> SUM(M_RPN) AND SUM(SOP_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS SOP_WORSE_CNT,
CASE WHEN SUM(SOP_RPN) <![CDATA[ < ]]> SUM(M_RPN) AND SUM(SOP_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS SOP_IMPROV_CNT,
CASE WHEN SUM(SOP_RPN) = SUM(M_RPN) AND SUM(SOP_RPN) <![CDATA[ > ]]> 0 THEN 1 ELSE 0 END AS SOP_KEEP_CNT,
CASE WHEN SUM(SOP_RPN) = 0 THEN 1 ELSE 0 END AS SOP_EMPTY_CNT,
1 AS CNT
FROM(
SELECT
INFO.OBJID
,((INFO.SEVERITY_SCORE*INFO.INCIDENCE_SCORE)*INFO.DETECT_SCORE) AS BASE_RPN
,CASE WHEN UPPER(ATTR.STEP2) = 'L1' THEN ((ATTR.SEVERITY_SCORE*ATTR.INCIDENCE_SCORE)*ATTR.DETECT_SCORE) ELSE 0 END AS L1_RPN
,CASE WHEN UPPER(ATTR.STEP2) = 'L2' THEN ((ATTR.SEVERITY_SCORE*ATTR.INCIDENCE_SCORE)*ATTR.DETECT_SCORE) ELSE 0 END AS L2_RPN
,CASE WHEN UPPER(ATTR.STEP2) = 'L3' THEN ((ATTR.SEVERITY_SCORE*ATTR.INCIDENCE_SCORE)*ATTR.DETECT_SCORE) ELSE 0 END AS L3_RPN
,CASE WHEN UPPER(ATTR.STEP2) = 'L4' THEN ((ATTR.SEVERITY_SCORE*ATTR.INCIDENCE_SCORE)*ATTR.DETECT_SCORE) ELSE 0 END AS L4_RPN
,CASE WHEN UPPER(ATTR.STEP2) = 'INSTL' THEN ((ATTR.SEVERITY_SCORE*ATTR.INCIDENCE_SCORE)*ATTR.DETECT_SCORE) ELSE 0 END AS INSTL_RPN
,CASE WHEN UPPER(ATTR.STEP2) = 'S/B' THEN ((ATTR.SEVERITY_SCORE*ATTR.INCIDENCE_SCORE)*ATTR.DETECT_SCORE) ELSE 0 END AS SB_RPN
,CASE WHEN UPPER(ATTR.STEP2) = 'P1' THEN ((ATTR.SEVERITY_SCORE*ATTR.INCIDENCE_SCORE)*ATTR.DETECT_SCORE) ELSE 0 END AS P1_RPN
,CASE WHEN UPPER(ATTR.STEP2) = 'P2' THEN ((ATTR.SEVERITY_SCORE*ATTR.INCIDENCE_SCORE)*ATTR.DETECT_SCORE) ELSE 0 END AS P2_RPN
,CASE WHEN UPPER(ATTR.STEP2) = 'M' THEN ((ATTR.SEVERITY_SCORE*ATTR.INCIDENCE_SCORE)*ATTR.DETECT_SCORE) ELSE 0 END AS M_RPN
,CASE WHEN UPPER(ATTR.STEP2) = '양산' THEN ((ATTR.SEVERITY_SCORE*ATTR.INCIDENCE_SCORE)*ATTR.DETECT_SCORE) ELSE 0 END AS SOP_RPN
FROM
PMS_DFMEA_CHANGE_ATTR ATTR,
PMS_DFMEA_INFO INFO,
PMS_DFMEA_BASE_INFO BASE_INFO
WHERE ATTR.TARGET_OBJID(+)=INFO.OBJID
AND BASE_INFO.OBJID = INFO.TARGET_OBJID
<if test="search_oemObjId != null and !''.equals(search_oemObjId)">
AND BASE_INFO.OEM_OBJID = #{search_oemObjId}
</if>
<if test="search_carObjId != null and !''.equals(search_carObjId)">
AND BASE_INFO.CAR_OBJID = #{search_carObjId}
</if>
<if test="search_productGroupObjId != null and !''.equals(search_productGroupObjId)">
AND BASE_INFO.PROD_GROUP_OBJID = #{search_productGroupObjId}
</if>
)GROUP BY OBJID,BASE_RPN
)
</select>
<!-- 차종별 금형이관 진행현황 PIE Chart -->
<select id="getMoldTransferResultPieChart" parameterType="map" resultType="map">
SELECT
SUM(APPLY_COUNT) AS APPLY_COUNT,
CASE WHEN SUM(TOTAL_COUNT) = 0 THEN 0 ELSE ROUND(SUM(APPLY_COUNT)/SUM(TOTAL_COUNT)*100) END AS APPLY_RATIO,
SUM(ACCEPT_APPLY_COUNT) AS ACCEPT_APPLY_COUNT,
CASE WHEN SUM(TOTAL_COUNT) = 0 THEN 0 ELSE ROUND(SUM(ACCEPT_APPLY_COUNT)/SUM(TOTAL_COUNT)*100) END AS ACCEPT_APPLY_RATIO,
SUM(REVIEW_COUNT) AS REVIEW_COUNT,
CASE WHEN SUM(TOTAL_COUNT) = 0 THEN 0 ELSE ROUND(SUM(REVIEW_COUNT)/SUM(TOTAL_COUNT)*100) END AS REVIEW_RATIO,
SUM(REJECT_COUNT) AS REJECT_COUNT,
CASE WHEN SUM(TOTAL_COUNT) = 0 THEN 0 ELSE ROUND(SUM(REJECT_COUNT)/SUM(TOTAL_COUNT)*100) END AS REJECT_RATIO,
SUM(NOT_TYPE_COUNT) AS NOT_TYPE_COUNT,
CASE WHEN SUM(TOTAL_COUNT) = 0 THEN 0 ELSE ROUND(SUM(NOT_TYPE_COUNT)/SUM(TOTAL_COUNT)*100) END AS NOT_TYPE_RATIO,
SUM(TOTAL_COUNT) AS TOTAL_COUNT
FROM(
SELECT
PART_NO,
CASE WHEN UPPER(RESULT) = 'APPLY' THEN 1 ELSE 0 END AS APPLY_COUNT,
CASE WHEN UPPER(RESULT) = 'ACCEPTAPPLY' THEN 1 ELSE 0 END AS ACCEPT_APPLY_COUNT,
CASE WHEN UPPER(RESULT) = 'REVIEW' THEN 1 ELSE 0 END AS REVIEW_COUNT,
CASE WHEN UPPER(RESULT) = 'REJECT' THEN 1 ELSE 0 END AS REJECT_COUNT,
CASE WHEN RESULT IS NULL THEN 1 ELSE 0 END AS NOT_TYPE_COUNT,
1 AS TOTAL_COUNT
FROM(
SELECT
DEV_MST_REL.PART_NO,
(SELECT RESULT FROM PMS_TRANSFER_MOLD_PART_HISTORY WHERE UPPER(IS_LAST) = 'Y' AND PART_NO = DEV_MST_REL.PART_NO) AS RESULT
FROM
PMS_TRANSFER_MOLD MOLD,
PMS_DEV_MASTER DEV_MST,
PMS_DEV_MASTER_REL_PART_INFO DEV_MST_REL
WHERE MOLD.OEM_OBJID = DEV_MST.OEM_OBJID
AND MOLD.CAR_OBJID = DEV_MST.CAR_OBJID
AND DEV_MST.OBJID = DEV_MST_REL.TARGET_OBJID
AND UPPER(DEV_MST_REL.DEV_POINT) = '2REALISTICPRODUCE'
<if test="oemObjId != null and !''.equals(oemObjId)">
AND MOLD.OEM_OBJID = #{oemObjId}
</if>
<if test="carObjId != null and !''.equals(carObjId)">
AND MOLD.CAR_OBJID = #{carObjId}
</if>
)
)
</select>
<!-- 차종별 상태 유형 드릴다운 제품군별 챠트 데이터를 가져온다. -->
<select id="getMoldTransferResultPieChartDrillDown" parameterType="map" resultType="map">
SELECT
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PROD_GROUP_NAME,
INFO.APPLY_COUNT,
CASE WHEN BASE.APPLY_COUNT = 0 THEN 0 ELSE ROUND(INFO.APPLY_COUNT/BASE.APPLY_COUNT*100) END AS APPLY_RATIO,
INFO.ACCEPT_APPLY_COUNT,
CASE WHEN BASE.ACCEPT_APPLY_COUNT = 0 THEN 0 ELSE ROUND(INFO.ACCEPT_APPLY_COUNT/BASE.ACCEPT_APPLY_COUNT*100) END AS ACCEPT_APPLY_RATIO,
INFO.REVIEW_COUNT,
CASE WHEN BASE.REVIEW_COUNT = 0 THEN 0 ELSE ROUND(INFO.REVIEW_COUNT/BASE.REVIEW_COUNT*100) END AS REVIEW_RATIO,
INFO.REJECT_COUNT,
CASE WHEN BASE.REJECT_COUNT = 0 THEN 0 ELSE ROUND(INFO.REJECT_COUNT/BASE.REJECT_COUNT*100) END AS REJECT_RATIO,
INFO.NOT_TYPE_COUNT,
CASE WHEN BASE.NOT_TYPE_COUNT = 0 THEN 0 ELSE ROUND(INFO.NOT_TYPE_COUNT/BASE.NOT_TYPE_COUNT*100) END AS NOT_TYPE_RATIO
FROM (
SELECT
<!-- PROD_OBJID, -->
PROD_GROUP_OBJID,
SUM(APPLY_COUNT) AS APPLY_COUNT,
SUM(ACCEPT_APPLY_COUNT) AS ACCEPT_APPLY_COUNT,
SUM(REVIEW_COUNT) AS REVIEW_COUNT,
SUM(REJECT_COUNT) AS REJECT_COUNT,
SUM(NOT_TYPE_COUNT) AS NOT_TYPE_COUNT,
SUM(TOTAL_COUNT)
FROM(
SELECT
PART_NO,
PROD_GROUP_OBJID,
CASE WHEN UPPER(RESULT) = 'APPLY' THEN 1 ELSE 0 END AS APPLY_COUNT,
CASE WHEN UPPER(RESULT) = 'ACCEPTAPPLY' THEN 1 ELSE 0 END AS ACCEPT_APPLY_COUNT,
CASE WHEN UPPER(RESULT) = 'REVIEW' THEN 1 ELSE 0 END AS REVIEW_COUNT,
CASE WHEN UPPER(RESULT) = 'REJECT' THEN 1 ELSE 0 END AS REJECT_COUNT,
CASE WHEN RESULT IS NULL THEN 1 ELSE 0 END AS NOT_TYPE_COUNT,
1 AS TOTAL_COUNT
FROM(
SELECT
DEV_MST_REL.PART_NO,
DEV_MST.PROD_GROUP_OBJID,
DEV_MST.PROD_OBJID,
(SELECT RESULT FROM PMS_TRANSFER_MOLD_PART_HISTORY WHERE UPPER(IS_LAST) = 'Y' AND PART_NO = DEV_MST_REL.PART_NO) AS RESULT
FROM
PMS_TRANSFER_MOLD MOLD,
PMS_DEV_MASTER DEV_MST,
PMS_DEV_MASTER_REL_PART_INFO DEV_MST_REL
WHERE MOLD.OEM_OBJID = DEV_MST.OEM_OBJID
AND MOLD.CAR_OBJID = DEV_MST.CAR_OBJID
AND DEV_MST.OBJID = DEV_MST_REL.TARGET_OBJID
AND UPPER(DEV_MST_REL.DEV_POINT) = '2REALISTICPRODUCE'
<if test="oemObjId != null and !''.equals(oemObjId)">
AND MOLD.OEM_OBJID = #{oemObjId}
</if>
<if test="carObjId != null and !''.equals(carObjId)">
AND MOLD.CAR_OBJID = #{carObjId}
</if>
)
)
<!-- GROUP BY PROD_OBJID -->
GROUP BY PROD_GROUP_OBJID
)INFO,
(
SELECT
SUM(APPLY_COUNT) AS APPLY_COUNT,
CASE WHEN SUM(TOTAL_COUNT) = 0 THEN 0 ELSE ROUND(SUM(APPLY_COUNT)/SUM(TOTAL_COUNT)*100) END AS APPLY_RATIO,
SUM(ACCEPT_APPLY_COUNT) AS ACCEPT_APPLY_COUNT,
CASE WHEN SUM(TOTAL_COUNT) = 0 THEN 0 ELSE ROUND(SUM(ACCEPT_APPLY_COUNT)/SUM(TOTAL_COUNT)*100) END AS ACCEPT_APPLY_RATIO,
SUM(REVIEW_COUNT) AS REVIEW_COUNT,
CASE WHEN SUM(TOTAL_COUNT) = 0 THEN 0 ELSE ROUND(SUM(REVIEW_COUNT)/SUM(TOTAL_COUNT)*100) END AS REVIEW_RATIO,
SUM(REJECT_COUNT) AS REJECT_COUNT,
CASE WHEN SUM(TOTAL_COUNT) = 0 THEN 0 ELSE ROUND(SUM(REJECT_COUNT)/SUM(TOTAL_COUNT)*100) END AS REJECT_RATIO,
SUM(NOT_TYPE_COUNT) AS NOT_TYPE_COUNT,
CASE WHEN SUM(TOTAL_COUNT) = 0 THEN 0 ELSE ROUND(SUM(NOT_TYPE_COUNT)/SUM(TOTAL_COUNT)*100) END AS NOT_TYPE_RATIO,
SUM(TOTAL_COUNT) AS TOTAL_COUNT
FROM(
SELECT
PART_NO,
CASE WHEN UPPER(RESULT) = 'APPLY' THEN 1 ELSE 0 END AS APPLY_COUNT,
CASE WHEN UPPER(RESULT) = 'ACCEPTAPPLY' THEN 1 ELSE 0 END AS ACCEPT_APPLY_COUNT,
CASE WHEN UPPER(RESULT) = 'REVIEW' THEN 1 ELSE 0 END AS REVIEW_COUNT,
CASE WHEN UPPER(RESULT) = 'REJECT' THEN 1 ELSE 0 END AS REJECT_COUNT,
CASE WHEN RESULT IS NULL THEN 1 ELSE 0 END AS NOT_TYPE_COUNT,
1 AS TOTAL_COUNT
FROM(
SELECT
DEV_MST_REL.PART_NO,
(SELECT RESULT FROM PMS_TRANSFER_MOLD_PART_HISTORY WHERE UPPER(IS_LAST) = 'Y' AND PART_NO = DEV_MST_REL.PART_NO) AS RESULT
FROM
PMS_TRANSFER_MOLD MOLD,
PMS_DEV_MASTER DEV_MST,
PMS_DEV_MASTER_REL_PART_INFO DEV_MST_REL
WHERE MOLD.OEM_OBJID = DEV_MST.OEM_OBJID
AND MOLD.CAR_OBJID = DEV_MST.CAR_OBJID
AND DEV_MST.OBJID = DEV_MST_REL.TARGET_OBJID
AND UPPER(DEV_MST_REL.DEV_POINT) = '2REALISTICPRODUCE'
<if test="oemObjId != null and !''.equals(oemObjId)">
AND MOLD.OEM_OBJID = #{oemObjId}
</if>
<if test="carObjId != null and !''.equals(carObjId)">
AND MOLD.CAR_OBJID = #{carObjId}
</if>
)
)
)BASE
</select>
<!-- 금형이관 제품군 별 이관율 bullt chart -->
<select id="getMoldTransferProdGroupResultBulltChart" parameterType="map" resultType="map">
SELECT
PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PROD_GROUP_OBJID) AS PROD_GROUP_NAME,
SUM(APPLY_COUNT) AS APPLY_COUNT,
SUM(ACCEPT_APPLY_COUNT) AS ACCEPT_APPLY_COUNT,
SUM(REVIEW_COUNT) AS REVIEW_COUNT,
SUM(REJECT_COUNT) AS REJECT_COUNT,
SUM(NOT_TYPE_COUNT) AS NOT_TYPE_COUNT,
SUM(TOTAL_COUNT),
CASE WHEN SUM(TOTAL_COUNT) = 0 THEN 0 ELSE ROUND(SUM(APPLY_COUNT)/SUM(TOTAL_COUNT)*100) END AS APPLY_RATIO
FROM(
SELECT
PART_NO,
PROD_GROUP_OBJID,
CASE WHEN UPPER(RESULT) = 'APPLY' THEN 1 ELSE 0 END AS APPLY_COUNT,
CASE WHEN UPPER(RESULT) = 'ACCEPTAPPLY' THEN 1 ELSE 0 END AS ACCEPT_APPLY_COUNT,
CASE WHEN UPPER(RESULT) = 'REVIEW' THEN 1 ELSE 0 END AS REVIEW_COUNT,
CASE WHEN UPPER(RESULT) = 'REJECT' THEN 1 ELSE 0 END AS REJECT_COUNT,
CASE WHEN RESULT IS NULL THEN 1 ELSE 0 END AS NOT_TYPE_COUNT,
1 AS TOTAL_COUNT
FROM(
SELECT
DEV_MST_REL.PART_NO,
DEV_MST.PROD_GROUP_OBJID,
(SELECT RESULT FROM PMS_TRANSFER_MOLD_PART_HISTORY WHERE UPPER(IS_LAST) = 'Y' AND PART_NO = DEV_MST_REL.PART_NO) AS RESULT
FROM
PMS_TRANSFER_MOLD MOLD,
PMS_DEV_MASTER DEV_MST,
PMS_DEV_MASTER_REL_PART_INFO DEV_MST_REL
WHERE MOLD.OEM_OBJID = DEV_MST.OEM_OBJID
AND MOLD.CAR_OBJID = DEV_MST.CAR_OBJID
AND DEV_MST.OBJID = DEV_MST_REL.TARGET_OBJID
AND UPPER(DEV_MST_REL.DEV_POINT) = '2REALISTICPRODUCE'
<if test="oemObjId != null and !''.equals(oemObjId)">
AND MOLD.OEM_OBJID = #{oemObjId}
</if>
<if test="carObjId != null and !''.equals(carObjId)">
AND MOLD.CAR_OBJID = #{carObjId}
</if>
)
)
GROUP BY PROD_GROUP_OBJID
</select>
<select id="getQualityMngDashboardBaseInfo" parameterType="map" resultType="map">
SELECT
OEM_OBJID,
CAR_OBJID,
PRODUCT_GROUP_OBJID
FROM(
SELECT
INFO.*,
MILE.MILESTONE_DATE
FROM CAR_MILESTONE_MNG MILE,
(
SELECT OEM_OBJID,CAR_OBJID,PRODUCT_GROUP_OBJID FROM PMS_DESIGN_CHK_LIST_BASE_INFO
UNION ALL
SELECT OEM_OBJID,CAR_OBJID,PROD_GROUP_OBJID AS PRODUCT_GROUP_OBJID FROM PMS_DFMEA_BASE_INFO
)INFO
WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND ROWNUM = 1)
AND MILE.CAR_OBJID = INFO.CAR_OBJID
ORDER BY MILESTONE_DATE DESC NULLS LAST
) WHERE ROWNUM=1
</select>
<!-- SOP가 가장 먼 순서 상위 7개 차종의 정보를 가져온다. -->
<select id="getSOPTop7CarList" parameterType="map" resultType="map">
SELECT INFO.* FROM(
SELECT
CAR.CAR_CODE,
MILE.SOP
FROM
CAR_MNG CAR,
(
SELECT TO_CHAR(MILESTONE_DATE, 'YYYY-MM-DD') AS SOP, CAR_OBJID
FROM CAR_MILESTONE_MNG A,
(
<!-- SELECT OBJID
FROM OEM_MILESTONE_MNG
WHERE UPPER(MILESTONE_NAME) = 'SOP' -->
SELECT OEM_MILE.OBJID
FROM OEM_MILESTONE_MNG OEM_MILE,
OEM_MNG OEM
WHERE UPPER(MILESTONE_NAME) = 'SOP'
AND OEM_MILE.OEM_OBJID = OEM.OBJID
AND OEM.OEM_NAME != '-'
) B
WHERE 1=1
AND A.MILESTONE_OBJID = B.OBJID
)MILE
WHERE CAR.OBJID = MILE.CAR_OBJID
ORDER BY SOP DESC NULLS LAST
)INFO
WHERE ROWNUM <![CDATA[ < ]]> 7
</select>
<!-- 문서이관 진행현황 PIE Chart -->
<select id="getDocTransferResultPieChart" parameterType="map" resultType="map">
SELECT * FROM(
SELECT
OBJID,
CASE WHEN SUM(TOTAL_CNT) != 0 AND SUM(OK_CNT) != 0 THEN ROUND((SUM(OK_CNT)/SUM(TOTAL_CNT))*100,0) ELSE 0 END COMPLETE_RATIO,
SUM(TOTAL_CNT) AS TOTAL_CNT,
SUM(OK_CNT) AS OK_CNT,
SUM(NG_CNT) AS NG_CNT,
SUM(PROCEEDING_CNT) AS PROCEEDING_CNT
FROM
(
SELECT
DOC.OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID)) AS OEM_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS CAR_CODE,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID)) PROD_GROUP_NAME,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) AS PROD_NAME,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS OEM_OBJID,
PJT.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) PROD_GROUP_OBJID,
PROD_PJT.SUB_OBJID AS PROD_OBJID
FROM
PMS_PJT_INFO PJT,
PMS_REL_PJT_PROD PROD_PJT,
PMS_TRANSFER_DOC DOC
WHERE PJT.OBJID = PROD_PJT.TARGET_OBJID
AND DOC.CAR_OBJID = PJT.CAR_OBJID
)PRODUCT_INFO,
(
SELECT
INFO.DOC_INFO_OBJID,
INFO.DOC_INFO_TARGET_OBJID,
INFO.DOC_INFO_PRODUCT_OBJID,
INFO.DOC_INFO_DOC_OBJID,
INFO.TRANSFER_DATE,
CASE WHEN INFO.TOTAL_TARGET_CNT = INFO.TOTAL_OK_CNT THEN 1 ELSE 0 END OK_CNT,
CASE WHEN INFO.TOTAL_TARGET_CNT = (INFO.TOTAL_OK_CNT+INFO.TOTAL_NG_CNT) AND INFO.TOTAL_NG_CNT > 0 THEN 1 ELSE 0 END NG_CNT,
CASE WHEN INFO.TOTAL_TARGET_CNT != (INFO.TOTAL_OK_CNT+INFO.TOTAL_NG_CNT) THEN 1 ELSE 0 END PROCEEDING_CNT,
1 TOTAL_CNT
FROM (
SELECT
DOC_INFO.OBJID AS DOC_INFO_OBJID,
DOC_INFO.TARGET_OBJID AS DOC_INFO_TARGET_OBJID,
DOC_INFO.PRODUCT_OBJID AS DOC_INFO_PRODUCT_OBJID,
DOC_INFO.DOC_OBJID AS DOC_INFO_DOC_OBJID,
DOC_INFO.TRANSFER_DATE,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' THEN 1 ELSE 0 END
AS TOTAL_TARGET_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCTION_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCTION_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND (UPPER(DOC_INFO.INTEGRITY_STATUS) = 'OK' OR UPPER(DOC_INFO.INTEGRITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND (UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'OK' OR UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
AS TOTAL_OK_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND UPPER(DOC_INFO.PRODUCTION_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND UPPER(DOC_INFO.INTEGRITY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'NG' THEN 1 ELSE 0 END
AS TOTAL_NG_CNT
FROM
PMS_TRANS_DOC_INFO DOC_INFO,
PMS_TRANSLATE_DOC_MNG BASE_DOC
WHERE DOC_INFO.DOC_OBJID = BASE_DOC.OBJID
)INFO
)INFO
WHERE PRODUCT_INFO.OBJID = INFO.DOC_INFO_TARGET_OBJID(+)
AND PRODUCT_INFO.PROD_OBJID = INFO.DOC_INFO_PRODUCT_OBJID(+)
GROUP BY OBJID
)WHERE 1=1
<if test="objId != null and !''.equals(objId)">
AND OBJID = #{objId}
</if>
</select>
<!-- 문서이관 진행현황 PIE Drill down Chart -->
<select id="getDocTransferResultPieChartDrillDown" parameterType="map" resultType="map">
SELECT * FROM(
SELECT
OBJID,
PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PRODUCT_NAME,
CASE WHEN SUM(TOTAL_CNT) != 0 AND SUM(OK_CNT) != 0 THEN ROUND((SUM(OK_CNT)/SUM(TOTAL_CNT))*100,0) ELSE 0 END COMPLETE_RATIO,
SUM(TOTAL_CNT) AS TOTAL_CNT,
SUM(OK_CNT) AS OK_CNT,
SUM(NG_CNT) AS NG_CNT,
SUM(PROCEEDING_CNT) AS PROCEEDING_CNT
FROM
(
SELECT
DOC.OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID)) AS OEM_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS CAR_CODE,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID)) PROD_GROUP_NAME,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) AS PROD_NAME,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS OEM_OBJID,
PJT.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) PROD_GROUP_OBJID,
PROD_PJT.SUB_OBJID AS PROD_OBJID
FROM
PMS_PJT_INFO PJT,
PMS_REL_PJT_PROD PROD_PJT,
PMS_TRANSFER_DOC DOC
WHERE PJT.OBJID = PROD_PJT.TARGET_OBJID
AND DOC.CAR_OBJID = PJT.CAR_OBJID
)PRODUCT_INFO,
(
SELECT
INFO.DOC_INFO_OBJID,
INFO.DOC_INFO_TARGET_OBJID,
INFO.DOC_INFO_PRODUCT_OBJID,
INFO.DOC_INFO_DOC_OBJID,
INFO.TRANSFER_DATE,
CASE WHEN INFO.TOTAL_TARGET_CNT = INFO.TOTAL_OK_CNT THEN 1 ELSE 0 END OK_CNT,
CASE WHEN INFO.TOTAL_TARGET_CNT = (INFO.TOTAL_OK_CNT+INFO.TOTAL_NG_CNT) AND INFO.TOTAL_NG_CNT > 0 THEN 1 ELSE 0 END NG_CNT,
CASE WHEN INFO.TOTAL_TARGET_CNT != (INFO.TOTAL_OK_CNT+INFO.TOTAL_NG_CNT) THEN 1 ELSE 0 END PROCEEDING_CNT,
1 TOTAL_CNT
FROM (
SELECT
DOC_INFO.OBJID AS DOC_INFO_OBJID,
DOC_INFO.TARGET_OBJID AS DOC_INFO_TARGET_OBJID,
DOC_INFO.PRODUCT_OBJID AS DOC_INFO_PRODUCT_OBJID,
DOC_INFO.DOC_OBJID AS DOC_INFO_DOC_OBJID,
DOC_INFO.TRANSFER_DATE,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' THEN 1 ELSE 0 END
AS TOTAL_TARGET_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCTION_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCTION_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND (UPPER(DOC_INFO.INTEGRITY_STATUS) = 'OK' OR UPPER(DOC_INFO.INTEGRITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND (UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'OK' OR UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END
AS TOTAL_OK_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND UPPER(DOC_INFO.PRODUCTION_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND UPPER(DOC_INFO.INTEGRITY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'NG' THEN 1 ELSE 0 END
AS TOTAL_NG_CNT
FROM
PMS_TRANS_DOC_INFO DOC_INFO,
PMS_TRANSLATE_DOC_MNG BASE_DOC
WHERE DOC_INFO.DOC_OBJID = BASE_DOC.OBJID
)INFO
)INFO
WHERE PRODUCT_INFO.OBJID = INFO.DOC_INFO_TARGET_OBJID(+)
AND PRODUCT_INFO.PROD_OBJID = INFO.DOC_INFO_PRODUCT_OBJID(+)
GROUP BY OBJID,PROD_OBJID
)WHERE 1=1
<if test="objId != null and !''.equals(objId)">
AND OBJID = #{objId}
</if>
</select>
<!-- 문서이관 부서별 진행현황 column Chart -->
<select id="getDocTransferDeptResultColumnChart" parameterType="map" resultType="map">
SELECT * FROM(
SELECT
OBJID,
SUM(PRODUCTION_TOTAL_TARGET_CNT) AS PRODUCTION_TOTAL_TARGET_CNT,
SUM(PRODUCTION_OK_CNT) AS PRODUCTION_OK_CNT,
SUM(PRODUCT_MNG_TOTAL_TARGET_CNT) AS PRODUCT_MNG_TOTAL_TARGET_CNT,
SUM(PRODUCT_MNG_OK_CNT) AS PRODUCT_MNG_OK_CNT,
SUM(INTEGRITY_TOTAL_TARGET_CNT) AS INTEGRITY_TOTAL_TARGET_CNT,
SUM(INTEGRITY_OK_CNT) AS INTEGRITY_OK_CNT,
SUM(COMPONENT_BUY_TOTAL_TARGET_CNT) AS COMPONENT_BUY_TOTAL_TARGET_CNT,
SUM(COMPONENT_BUY_OK_CNT) AS COMPONENT_BUY_OK_CNT,
SUM(PROD_QUALITY_TOTAL_TARGET_CNT) AS PROD_QUALITY_TOTAL_TARGET_CNT,
SUM(PROD_QUALITY_OK_CNT) AS PROD_QUALITY_OK_CNT
FROM
(
SELECT
DOC.OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID)) AS OEM_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS CAR_CODE,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID)) PROD_GROUP_NAME,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) AS PROD_NAME,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS OEM_OBJID,
PJT.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) PROD_GROUP_OBJID,
PROD_PJT.SUB_OBJID AS PROD_OBJID
FROM
PMS_PJT_INFO PJT,
PMS_REL_PJT_PROD PROD_PJT,
PMS_TRANSFER_DOC DOC
WHERE PJT.OBJID = PROD_PJT.TARGET_OBJID
AND DOC.CAR_OBJID = PJT.CAR_OBJID
)PRODUCT_INFO,
(
SELECT
INFO.DOC_INFO_OBJID,
INFO.DOC_INFO_TARGET_OBJID,
INFO.DOC_INFO_PRODUCT_OBJID,
INFO.DOC_INFO_DOC_OBJID,
INFO.TRANSFER_DATE,
PRODUCTION_TOTAL_TARGET_CNT,
PRODUCTION_OK_CNT,
PRODUCT_MNG_TOTAL_TARGET_CNT,
PRODUCT_MNG_OK_CNT,
INTEGRITY_TOTAL_TARGET_CNT,
INTEGRITY_OK_CNT,
COMPONENT_BUY_TOTAL_TARGET_CNT,
COMPONENT_BUY_OK_CNT,
PROD_QUALITY_TOTAL_TARGET_CNT,
PROD_QUALITY_OK_CNT,
1 TOTAL_CNT
FROM (
SELECT
DOC_INFO.OBJID AS DOC_INFO_OBJID,
DOC_INFO.TARGET_OBJID AS DOC_INFO_TARGET_OBJID,
DOC_INFO.PRODUCT_OBJID AS DOC_INFO_PRODUCT_OBJID,
DOC_INFO.DOC_OBJID AS DOC_INFO_DOC_OBJID,
DOC_INFO.TRANSFER_DATE,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' THEN 1 ELSE 0 END AS PRODUCTION_TOTAL_TARGET_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCTION_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCTION_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END AS PRODUCTION_OK_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' THEN 1 ELSE 0 END AS PRODUCT_MNG_TOTAL_TARGET_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END AS PRODUCT_MNG_OK_CNT,
CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' THEN 1 ELSE 0 END AS INTEGRITY_TOTAL_TARGET_CNT,
CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND (UPPER(DOC_INFO.INTEGRITY_STATUS) = 'OK' OR UPPER(DOC_INFO.INTEGRITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END AS INTEGRITY_OK_CNT,
CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' THEN 1 ELSE 0 END AS COMPONENT_BUY_TOTAL_TARGET_CNT,
CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND (UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'OK' OR UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END AS COMPONENT_BUY_OK_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' THEN 1 ELSE 0 END AS PROD_QUALITY_TOTAL_TARGET_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND (UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'OK' OR UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'ACCEPTOK') THEN 1 ELSE 0 END AS PROD_QUALITY_OK_CNT
FROM
PMS_TRANS_DOC_INFO DOC_INFO,
PMS_TRANSLATE_DOC_MNG BASE_DOC
WHERE DOC_INFO.DOC_OBJID = BASE_DOC.OBJID
)INFO
)INFO
WHERE PRODUCT_INFO.OBJID = INFO.DOC_INFO_TARGET_OBJID(+)
AND PRODUCT_INFO.PROD_OBJID = INFO.DOC_INFO_PRODUCT_OBJID(+)
GROUP BY OBJID
)WHERE 1=1
<if test="objId != null and !''.equals(objId)">
AND OBJID = #{objId}
</if>
</select>
<!-- 문서이관 인계부서별 인계현황 column Chart -->
<select id="getDocTransferHandOverResultColumnChart" parameterType="map" resultType="map">
SELECT * FROM(
SELECT
OBJID,
HAND_OVER_DEPT,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = HAND_OVER_DEPT) AS HAND_OVER_DEPT_NAME,
SUM(HAND_OVER_TOTAL_CNT) AS HAND_OVER_TOTAL_CNT,
SUM(HAND_OVER_TOTAL_CONFIRM_CNT) AS HAND_OVER_TOTAL_CONFIRM_CNT,
SUM(HAND_OVER_TOTAL_NO_CONFIRM_CNT) AS HAND_OVER_TOTAL_NO_CONFIRM_CNT
FROM
(
SELECT
DOC.OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID)) AS OEM_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS CAR_CODE,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID)) PROD_GROUP_NAME,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) AS PROD_NAME,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS OEM_OBJID,
PJT.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) PROD_GROUP_OBJID,
PROD_PJT.SUB_OBJID AS PROD_OBJID
FROM
PMS_PJT_INFO PJT,
PMS_REL_PJT_PROD PROD_PJT,
PMS_TRANSFER_DOC DOC
WHERE PJT.OBJID = PROD_PJT.TARGET_OBJID
AND DOC.CAR_OBJID = PJT.CAR_OBJID
)PRODUCT_INFO,
(
SELECT
INFO.DOC_INFO_OBJID,
INFO.DOC_INFO_TARGET_OBJID,
INFO.DOC_INFO_PRODUCT_OBJID,
INFO.DOC_INFO_DOC_OBJID,
INFO.TRANSFER_DATE,
INFO.HAND_OVER_TOTAL_CNT,
INFO.HAND_OVER_TOTAL_CONFIRM_CNT,
INFO.HAND_OVER_TOTAL_NO_CONFIRM_CNT,
INFO.HAND_OVER_DEPT,
1 TOTAL_CNT
FROM (
SELECT
DOC_INFO.OBJID AS DOC_INFO_OBJID,
DOC_INFO.TARGET_OBJID AS DOC_INFO_TARGET_OBJID,
DOC_INFO.PRODUCT_OBJID AS DOC_INFO_PRODUCT_OBJID,
DOC_INFO.DOC_OBJID AS DOC_INFO_DOC_OBJID,
DOC_INFO.TRANSFER_DATE,
BASE_DOC.HAND_OVER_DEPT,
1 AS HAND_OVER_TOTAL_CNT,
CASE WHEN UPPER(DOC_INFO.HAND_OVER_STATUS) = 'CONFIRM' THEN 1 ELSE 0 END AS HAND_OVER_TOTAL_CONFIRM_CNT,
CASE WHEN DOC_INFO.HAND_OVER_STATUS IS NULL THEN 1 ELSE 0 END AS HAND_OVER_TOTAL_NO_CONFIRM_CNT
FROM
PMS_TRANS_DOC_INFO DOC_INFO,
PMS_TRANSLATE_DOC_MNG BASE_DOC
WHERE DOC_INFO.DOC_OBJID = BASE_DOC.OBJID
)INFO
)INFO
WHERE PRODUCT_INFO.OBJID = INFO.DOC_INFO_TARGET_OBJID(+)
AND PRODUCT_INFO.PROD_OBJID = INFO.DOC_INFO_PRODUCT_OBJID(+)
GROUP BY OBJID,HAND_OVER_DEPT
)WHERE 1=1
<if test="objId != null and !''.equals(objId)">
AND OBJID = #{objId}
</if>
</select>
<!-- 문서이관 제품별 진행현황 Bar Chart -->
<select id="getDocTransferProductResultBarChart" parameterType="map" resultType="map">
SELECT * FROM(
SELECT
OBJID,
PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_OBJID) AS PRODUCT_NAME,
SUM(TOTAL_OK_CNT) AS OK_CNT,
SUM(TOTAL_ACCEPT_OK_CNT) AS ACCEPT_OK_CNT,
SUM(TOTAL_NG_CNT) AS NG_CNT,
SUM(TOTAL_PROCEEDING_CNT) AS PROCEEDING_CNT
FROM
(
SELECT
DOC.OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = (SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID)) AS OEM_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS CAR_CODE,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID)) PROD_GROUP_NAME,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) AS PROD_NAME,
(SELECT OEM_OBJID FROM CAR_MNG WHERE OBJID = PJT.CAR_OBJID) AS OEM_OBJID,
PJT.CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PROD_PJT.SUB_OBJID) PROD_GROUP_OBJID,
PROD_PJT.SUB_OBJID AS PROD_OBJID
FROM
PMS_PJT_INFO PJT,
PMS_REL_PJT_PROD PROD_PJT,
PMS_TRANSFER_DOC DOC
WHERE PJT.OBJID = PROD_PJT.TARGET_OBJID
AND DOC.CAR_OBJID = PJT.CAR_OBJID
)PRODUCT_INFO,
(
SELECT
DOC_INFO.OBJID AS DOC_INFO_OBJID,
DOC_INFO.TARGET_OBJID AS DOC_INFO_TARGET_OBJID,
DOC_INFO.PRODUCT_OBJID AS DOC_INFO_PRODUCT_OBJID,
DOC_INFO.DOC_OBJID AS DOC_INFO_DOC_OBJID,
DOC_INFO.TRANSFER_DATE,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' THEN 1 ELSE 0 END
AS TOTAL_TARGET_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND UPPER(DOC_INFO.PRODUCTION_STATUS) = 'OK' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'OK' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND UPPER(DOC_INFO.INTEGRITY_STATUS) = 'OK' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'OK' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'OK' THEN 1 ELSE 0 END
AS TOTAL_OK_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND UPPER(DOC_INFO.PRODUCTION_STATUS) = 'ACCEPTOK' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'ACCEPTOK' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND UPPER(DOC_INFO.INTEGRITY_STATUS) = 'ACCEPTOK' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'ACCEPTOK' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'ACCEPTOK' THEN 1 ELSE 0 END
AS TOTAL_ACCEPT_OK_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND UPPER(DOC_INFO.PRODUCTION_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_MNG_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND UPPER(DOC_INFO.INTEGRITY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND UPPER(DOC_INFO.COMPONENT_BUY_STATUS) = 'NG' THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND UPPER(DOC_INFO.PRODUCT_QUALITY_STATUS) = 'NG' THEN 1 ELSE 0 END
AS TOTAL_NG_CNT,
CASE WHEN UPPER(BASE_DOC.IS_PRODUCTION) = 'TARGET' AND DOC_INFO.PRODUCTION_STATUS IS NULL THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_MNG) = 'TARGET' AND DOC_INFO.PRODUCT_MNG_STATUS IS NULL THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_INTEGRITY) = 'TARGET' AND DOC_INFO.INTEGRITY_STATUS IS NULL THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_COMPONENT_BUY) = 'TARGET' AND DOC_INFO.COMPONENT_BUY_STATUS IS NULL THEN 1 ELSE 0 END
+ CASE WHEN UPPER(BASE_DOC.IS_PRODUCT_QUALITY) = 'TARGET' AND DOC_INFO.PRODUCT_QUALITY_STATUS IS NULL THEN 1 ELSE 0 END
AS TOTAL_PROCEEDING_CNT
FROM
PMS_TRANS_DOC_INFO DOC_INFO,
PMS_TRANSLATE_DOC_MNG BASE_DOC
WHERE DOC_INFO.DOC_OBJID = BASE_DOC.OBJID
)INFO
WHERE PRODUCT_INFO.OBJID = INFO.DOC_INFO_TARGET_OBJID(+)
AND PRODUCT_INFO.PROD_OBJID = INFO.DOC_INFO_PRODUCT_OBJID(+)
GROUP BY OBJID,PROD_OBJID
)WHERE 1=1
<if test="targetObjId != null and !''.equals(targetObjId) and productObjId != null and !''.equals(productObjId)">
AND OBJID = #{targetObjId}
AND PROD_OBJID = #{productObjId}
</if>
</select>
<!-- 품질이관 갑지별 상태 분포 PIE Chart -->
<select id="getQualityTransferStatusPieChart" parameterType="map" resultType="map">
SELECT
INFO.GABJI_OBJID,
SUM(OK_CNT) AS OK_CNT,
SUM(NO_CONFIRM_CNT) AS NO_CONFIRM_CNT,
SUM(NO_INPUT_CNT) AS NO_INPUT_CNT
FROM(
SELECT
INFO.GABJI_OBJID,
INFO.PROD_OBJID,
INFO.PART_NO,
HISTORY.TAKE_OVER_STATUS,
CASE WHEN UPPER(HISTORY.TAKE_OVER_STATUS) IN ('OK','ACCEPTOK') AND MAX(HISTORY.TAKE_OVER_DATE) IS NOT NULL THEN 1 END OK_CNT,
CASE WHEN HISTORY.TAKE_OVER_STATUS IS NOT NULL AND MAX(HISTORY.TAKE_OVER_DATE) IS NOT NULL THEN 1 END NO_CONFIRM_CNT,
CASE WHEN HISTORY.TAKE_OVER_STATUS IS NULL THEN 1 END NO_INPUT_CNT
FROM(
SELECT
A.GABJI_OBJID,
A.OEM_OBJID,
A.CAR_OBJID,
A.PROD_GROUP_OBJID,
A.PROD_OBJID,
A.PART_NO,
A.PART_OBJID
FROM (
SELECT
QUALITY.OBJID AS GABJI_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, M.PROD_OBJID
, P.PART_NO
, P.PART_OBJID
FROM
PMS_DEV_MASTER M,
PMS_TRANSFER_QUALITY QUALITY,
(
SELECT
DP.*,
(SELECT (SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = PART.MATERIAL_TYPE_OBJID) FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS MATERIAL_TYPE_NAME,
(SELECT OBJID FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS PART_OBJID
FROM PMS_DEV_MASTER_REL_PART_INFO DP
) P,
(
SELECT
B.TARGET_OBJID AS PROJECT_OBJID
, B.SUB_OBJID AS PROD_OBJID
, A.OEM_OBJID AS OEM_OBJID
, A.CAR_OBJID AS CAR_OBJID
FROM PMS_PJT_INFO A, PMS_REL_PJT_PROD B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
) PROJ_PROD
WHERE 1=1
AND M.OBJID = P.TARGET_OBJID
AND M.OEM_OBJID = QUALITY.OEM_OBJID
AND M.CAR_OBJID = QUALITY.CAR_OBJID
AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE'
AND P.MATERIAL_TYPE_NAME = '제품'
AND PROJ_PROD.OEM_OBJID = QUALITY.OEM_OBJID
AND PROJ_PROD.CAR_OBJID = QUALITY.CAR_OBJID
AND M.OEM_OBJID = PROJ_PROD.OEM_OBJID
AND M.CAR_OBJID = PROJ_PROD.CAR_OBJID
AND M.PROD_OBJID = PROJ_PROD.PROD_OBJID
) A,
(
SELECT
TEST_RESULT_STATUS.PART_NO AS DEV_MASTER_PART_NO,
TEST_RESULT_STATUS.TAKE_OVER_DATE,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_CNT,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_PROGRESS_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_PROGRESS_CNT
FROM
PMS_TRANSFER_REL_TEST_RESULT TEST_RESULT_PART,
PMS_TRANS_TEST_RESULT_STATUS TEST_RESULT_STATUS
WHERE 1=1
AND TEST_RESULT_PART.TARGET_OBJID = TEST_RESULT_STATUS.TRANSFER_INFO_OBJID(+)
AND TEST_RESULT_PART.PRODUCT_OBJID = TEST_RESULT_STATUS.PRODUCT_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_MASTER_OBJID = TEST_RESULT_STATUS.TEST_RESULT_MASTER_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_SLAVE_OBJID = TEST_RESULT_STATUS.TEST_RESULT_SLAVE_OBJID(+)
)TEST_RESULT
WHERE 1=1
AND A.PART_NO = TEST_RESULT.DEV_MASTER_PART_NO(+)
GROUP BY A.GABJI_OBJID,A.OEM_OBJID,A.CAR_OBJID,A.PROD_GROUP_OBJID,A.PROD_OBJID,A.PART_OBJID,A.PART_NO
) INFO,
(
SELECT
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
PART_NO,
CHARGER_ID,
TAKE_OVER_STATUS,
REASON,
TAKE_OVER_COMMENT,
IS_LAST,
TAKE_OVER_DATE,
REGDATE
FROM PMS_TRANSFER_QUALITY_HISTORY
WHERE IS_LAST = 1
)HISTORY
WHERE 1=1
AND INFO.GABJI_OBJID = HISTORY.TARGET_OBJID(+)
AND INFO.PROD_OBJID = HISTORY.PRODUCT_OBJID(+)
AND INFO.PART_NO = HISTORY.PART_NO(+)
GROUP BY INFO.GABJI_OBJID,INFO.PROD_OBJID,INFO.PART_NO,HISTORY.TAKE_OVER_STATUS
)INFO WHERE 1=1 GROUP BY INFO.GABJI_OBJID HAVING INFO.GABJI_OBJID = #{objId}
</select>
<!-- 품질이관 갑지별 상태 분포 Drill down 제품별 상태 PIE Chart -->
<select id="getQualityTransferProductStatusDrillDownChart" parameterType="map" resultType="map">
SELECT
INFO.GABJI_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) PRODUCT_NAME,
INFO.PROD_OBJID,
SUM(OK_CNT) AS OK_CNT,
SUM(NO_CONFIRM_CNT) AS NO_CONFIRM_CNT,
SUM(NO_INPUT_CNT) AS NO_INPUT_CNT
FROM(
SELECT
INFO.GABJI_OBJID,
INFO.PROD_OBJID,
INFO.PART_NO,
HISTORY.TAKE_OVER_STATUS,
CASE WHEN UPPER(HISTORY.TAKE_OVER_STATUS) IN ('OK','ACCEPTOK') AND MAX(HISTORY.TAKE_OVER_DATE) IS NOT NULL THEN 1 END OK_CNT,
CASE WHEN HISTORY.TAKE_OVER_STATUS IS NOT NULL AND MAX(HISTORY.TAKE_OVER_DATE) IS NOT NULL THEN 1 END NO_CONFIRM_CNT,
CASE WHEN HISTORY.TAKE_OVER_STATUS IS NULL THEN 1 END NO_INPUT_CNT
FROM(
SELECT
A.GABJI_OBJID,
A.OEM_OBJID,
A.CAR_OBJID,
A.PROD_GROUP_OBJID,
A.PROD_OBJID,
A.PART_NO,
A.PART_OBJID
FROM (
SELECT
QUALITY.OBJID AS GABJI_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, M.PROD_OBJID
, P.PART_NO
, P.PART_OBJID
FROM
PMS_DEV_MASTER M,
PMS_TRANSFER_QUALITY QUALITY,
(
SELECT
DP.*,
(SELECT (SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = PART.MATERIAL_TYPE_OBJID) FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS MATERIAL_TYPE_NAME,
(SELECT OBJID FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS PART_OBJID
FROM PMS_DEV_MASTER_REL_PART_INFO DP
) P,
(
SELECT
B.TARGET_OBJID AS PROJECT_OBJID
, B.SUB_OBJID AS PROD_OBJID
, A.OEM_OBJID AS OEM_OBJID
, A.CAR_OBJID AS CAR_OBJID
FROM PMS_PJT_INFO A, PMS_REL_PJT_PROD B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
) PROJ_PROD
WHERE 1=1
AND M.OBJID = P.TARGET_OBJID
AND M.OEM_OBJID = QUALITY.OEM_OBJID
AND M.CAR_OBJID = QUALITY.CAR_OBJID
AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE'
AND P.MATERIAL_TYPE_NAME = '제품'
AND PROJ_PROD.OEM_OBJID = QUALITY.OEM_OBJID
AND PROJ_PROD.CAR_OBJID = QUALITY.CAR_OBJID
AND M.OEM_OBJID = PROJ_PROD.OEM_OBJID
AND M.CAR_OBJID = PROJ_PROD.CAR_OBJID
AND M.PROD_OBJID = PROJ_PROD.PROD_OBJID
) A,
(
SELECT
TEST_RESULT_STATUS.PART_NO AS DEV_MASTER_PART_NO,
TEST_RESULT_STATUS.TAKE_OVER_DATE,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_CNT,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_PROGRESS_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_PROGRESS_CNT
FROM
PMS_TRANSFER_REL_TEST_RESULT TEST_RESULT_PART,
PMS_TRANS_TEST_RESULT_STATUS TEST_RESULT_STATUS
WHERE 1=1
AND TEST_RESULT_PART.TARGET_OBJID = TEST_RESULT_STATUS.TRANSFER_INFO_OBJID(+)
AND TEST_RESULT_PART.PRODUCT_OBJID = TEST_RESULT_STATUS.PRODUCT_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_MASTER_OBJID = TEST_RESULT_STATUS.TEST_RESULT_MASTER_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_SLAVE_OBJID = TEST_RESULT_STATUS.TEST_RESULT_SLAVE_OBJID(+)
)TEST_RESULT
WHERE 1=1
AND A.PART_NO = TEST_RESULT.DEV_MASTER_PART_NO(+)
GROUP BY A.GABJI_OBJID,A.OEM_OBJID,A.CAR_OBJID,A.PROD_GROUP_OBJID,A.PROD_OBJID,A.PART_OBJID,A.PART_NO
) INFO,
(
SELECT
OBJID,
TARGET_OBJID,
PRODUCT_OBJID,
PART_NO,
CHARGER_ID,
TAKE_OVER_STATUS,
REASON,
TAKE_OVER_COMMENT,
IS_LAST,
TAKE_OVER_DATE,
REGDATE
FROM PMS_TRANSFER_QUALITY_HISTORY
WHERE IS_LAST = 1
)HISTORY
WHERE 1=1
AND INFO.GABJI_OBJID = HISTORY.TARGET_OBJID(+)
AND INFO.PROD_OBJID = HISTORY.PRODUCT_OBJID(+)
AND INFO.PART_NO = HISTORY.PART_NO(+)
GROUP BY INFO.GABJI_OBJID,INFO.PROD_OBJID,INFO.PART_NO,HISTORY.TAKE_OVER_STATUS
)INFO
WHERE 1=1
GROUP BY INFO.GABJI_OBJID,INFO.PROD_OBJID
HAVING INFO.GABJI_OBJID = #{objId}
</select>
<!-- 품질이관 갑지에 해당하는 차종의 제품별 품질,문서 이관율을 보여준다. -->
<select id="getQualityTransferCarProductResultChart" parameterType="map" resultType="map">
SELECT
INFO.OBJID,
RESULT_INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = RESULT_INFO.PROD_OBJID) AS PRODUCT_NAME,
RESULT_INFO.TEST_RESULT_RATIO,
RESULT_INFO.DOC_RESULT_RATIO
FROM(
SELECT
QUALITY.OBJID,
QUALITY.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = QUALITY.OEM_OBJID) AS OEM_NAME,
QUALITY.CAR_OBJID,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = QUALITY.CAR_OBJID) AS CAR_CODE,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = QUALITY.CAR_OBJID) AS CAR_NAME,
QUALITY.WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = QUALITY.WRITER) AS USER_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = QUALITY.WRITER) AS USER_NAME,
QUALITY.REGDATE,
QUALITY.STATUS,
(SELECT TO_CHAR(CAR.MILESTONE_DATE, 'YYYY-MM-DD') FROM OEM_MILESTONE_MNG OEM, CAR_MILESTONE_MNG CAR WHERE OEM.OBJID = CAR.MILESTONE_OBJID AND OEM.MILESTONE_NAME = 'SOP' AND OEM.OEM_OBJID = QUALITY.OEM_OBJID AND CAR.CAR_OBJID = QUALITY.CAR_OBJID) AS SOP,
QUALITY.TAKE_OVER_DATE,
(SELECT COUNT(1) FROM PMS_REL_PJT_PROD WHERE TARGET_OBJID = PJT.OBJID) AS PROD_CNT
FROM
PMS_TRANSFER_QUALITY QUALITY,
PMS_PJT_INFO PJT
WHERE QUALITY.CAR_OBJID = PJT.CAR_OBJID(+)
) INFO,
(
SELECT
INFO.GABJI_OBJID,
INFO.PROD_OBJID,
CASE WHEN SUM(ASSY_TARGET_TOTAL_CNT+PART_TARGET_TOTAL_CNT) > 0 THEN ROUND((SUM(ASSY_OK_CNT+PART_OK_CNT)/SUM(ASSY_TARGET_TOTAL_CNT+PART_TARGET_TOTAL_CNT))*100,0) ELSE 0 END TEST_RESULT_RATIO,
CASE WHEN SUM(DOC_TRANSFER_RESULT.DOC_TOTAL_CNT) > 0 THEN ROUND((SUM(DOC_TRANSFER_RESULT.DOC_OK_TOTAL_CNT)/SUM(DOC_TRANSFER_RESULT.DOC_TOTAL_CNT))*100,0) ELSE 0 END DOC_RESULT_RATIO
FROM(
SELECT
A.GABJI_OBJID,
A.OEM_OBJID,
A.CAR_OBJID,
A.PROD_GROUP_OBJID,
A.PROD_OBJID,
A.PART_NO,
A.PART_OBJID,
(SELECT COUNT(1) FROM PMS_TRANSFER_REL_TEST_RESULT WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND UPPER(PART_TYPE) = 'ASSY') AS ASSY_TARGET_TOTAL_CNT,
(SELECT COUNT(1) FROM PMS_TRANSFER_REL_TEST_RESULT WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND UPPER(PART_TYPE) = 'PART') AS PART_TARGET_TOTAL_CNT,
CASE WHEN SUM(TEST_RESULT.ASSY_OK_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.ASSY_OK_CNT) END ASSY_OK_CNT,
CASE WHEN SUM(TEST_RESULT.ASSY_PROGRESS_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.ASSY_PROGRESS_CNT) END ASSY_PROGRESS_CNT,
CASE WHEN SUM(TEST_RESULT.PART_OK_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.PART_OK_CNT) END PART_OK_CNT,
CASE WHEN SUM(TEST_RESULT.PART_PROGRESS_CNT) IS NULL THEN 0 ELSE SUM(TEST_RESULT.PART_PROGRESS_CNT) END PART_PROGRESS_CNT
FROM (
SELECT
QUALITY.OBJID AS GABJI_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, M.PROD_OBJID
, P.PART_NO
, P.PART_OBJID
FROM
PMS_DEV_MASTER M,
PMS_TRANSFER_QUALITY QUALITY,
(
SELECT
DP.*,
(SELECT (SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = PART.MATERIAL_TYPE_OBJID) FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS MATERIAL_TYPE_NAME,
(SELECT OBJID FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS PART_OBJID
FROM PMS_DEV_MASTER_REL_PART_INFO DP
) P,
(
SELECT
B.TARGET_OBJID AS PROJECT_OBJID
, B.SUB_OBJID AS PROD_OBJID
, A.OEM_OBJID AS OEM_OBJID
, A.CAR_OBJID AS CAR_OBJID
FROM PMS_PJT_INFO A, PMS_REL_PJT_PROD B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
) PROJ_PROD
WHERE 1=1
AND M.OBJID = P.TARGET_OBJID
AND M.OEM_OBJID = QUALITY.OEM_OBJID
AND M.CAR_OBJID = QUALITY.CAR_OBJID
AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE'
AND P.MATERIAL_TYPE_NAME = '제품'
AND PROJ_PROD.OEM_OBJID = QUALITY.OEM_OBJID
AND PROJ_PROD.CAR_OBJID = QUALITY.CAR_OBJID
AND M.OEM_OBJID = PROJ_PROD.OEM_OBJID
AND M.CAR_OBJID = PROJ_PROD.CAR_OBJID
AND M.PROD_OBJID = PROJ_PROD.PROD_OBJID
) A,
(
SELECT
TEST_RESULT_STATUS.PART_NO AS DEV_MASTER_PART_NO,
TEST_RESULT_STATUS.TAKE_OVER_DATE,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_CNT,
CASE WHEN UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'ASSY' THEN 1 ELSE 0 END ASSY_PROGRESS_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NOT NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_OK_CNT,
CASE WHEN TEST_RESULT_STATUS.TAKE_OVER_DATE IS NULL AND UPPER(TEST_RESULT_PART.PART_TYPE) = 'PART' THEN 1 ELSE 0 END PART_PROGRESS_CNT
FROM
PMS_TRANSFER_REL_TEST_RESULT TEST_RESULT_PART,
PMS_TRANS_TEST_RESULT_STATUS TEST_RESULT_STATUS
WHERE 1=1
AND TEST_RESULT_PART.TARGET_OBJID = TEST_RESULT_STATUS.TRANSFER_INFO_OBJID(+)
AND TEST_RESULT_PART.PRODUCT_OBJID = TEST_RESULT_STATUS.PRODUCT_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_MASTER_OBJID = TEST_RESULT_STATUS.TEST_RESULT_MASTER_OBJID(+)
AND TEST_RESULT_PART.TEST_RESULT_SLAVE_OBJID = TEST_RESULT_STATUS.TEST_RESULT_SLAVE_OBJID(+)
)TEST_RESULT
WHERE 1=1
AND A.PART_NO = TEST_RESULT.DEV_MASTER_PART_NO(+)
GROUP BY A.GABJI_OBJID,A.OEM_OBJID,A.CAR_OBJID,A.PROD_GROUP_OBJID,A.PROD_OBJID,A.PART_OBJID,A.PART_NO
) INFO,
(
SELECT
CAR_OBJID,
PRODUCT_OBJID,
CASE WHEN SUM(CNT) != 0 THEN ROUND((SUM(OK_CNT)/SUM(CNT))*100,0) ELSE 0 END OK_RATIO,
SUM(CNT) AS DOC_TOTAL_CNT,
SUM(OK_CNT) AS DOC_OK_TOTAL_CNT
FROM(
SELECT
OBJID,
CAR_OBJID,
PRODUCT_OBJID,
DOC_OBJID,
(SELECT TRANSLATE_TYPE FROM PMS_TRANSLATE_DOC_MNG WHERE OBJID = DOC_OBJID) AS TRANSLATE_TYPE,
STATUS,
1 AS CNT,
CASE WHEN UPPER(STATUS) = 'OK' THEN 1 ELSE 0 END OK_CNT
FROM PMS_TRANS_DOC_INFO
)WHERE UPPER(TRANSLATE_TYPE) = 'QUALITY'
GROUP BY CAR_OBJID,PRODUCT_OBJID
)DOC_TRANSFER_RESULT
WHERE 1=1
AND INFO.CAR_OBJID = DOC_TRANSFER_RESULT.CAR_OBJID(+)
AND INFO.PROD_OBJID = DOC_TRANSFER_RESULT.PRODUCT_OBJID(+)
GROUP BY INFO.GABJI_OBJID,INFO.PROD_OBJID
)RESULT_INFO
WHERE INFO.OBJID = #{objId}
AND INFO.OBJID = RESULT_INFO.GABJI_OBJID(+)
</select>
<!-- 품질이관 제품에 해당하는 상태 분포도를 보여준다. -->
<select id="getQualityTransferProductStatusBarChart" parameterType="map" resultType="map">
SELECT
AA.*,
TO_CHAR(AA.TAKE_OVER_DATE,'YYYY-MM-DD') AS TAKE_OVER_DATE_TITLE,
CASE WHEN AA.TOTAL_TARGET_PART_CNT > 0 THEN ROUND((AA.TOTAL_TARGET_OK_PART_CNT/AA.TOTAL_TARGET_PART_CNT)*100,0) ELSE 0 END TRANSFER_RATIO
FROM (
SELECT
A.*,
(SELECT COUNT(1) FROM PMS_TRANSFER_QUALITY_HISTORY WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND (UPPER(TAKE_OVER_STATUS) = 'OK' OR UPPER(TAKE_OVER_STATUS) = 'ACCEPTOK') AND IS_LAST = 1) AS TOTAL_TARGET_OK_PART_CNT,
(SELECT COUNT(1) FROM PMS_TRANSFER_QUALITY_HISTORY WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND TAKE_OVER_STATUS IS NOT NULL AND IS_LAST = 1) AS TOTAL_TARGET_PROGRESS_PART_CNT,
(SELECT MAX(TAKE_OVER_DATE) FROM PMS_TRANSFER_QUALITY_HISTORY WHERE TARGET_OBJID = A.GABJI_OBJID AND PRODUCT_OBJID = A.PROD_OBJID AND (UPPER(TAKE_OVER_STATUS) = 'OK' OR UPPER(TAKE_OVER_STATUS) = 'ACCEPTOK') AND IS_LAST = 1) AS TAKE_OVER_DATE
FROM (
SELECT QUALITY.OBJID AS GABJI_OBJID
, M.OEM_OBJID
, M.CAR_OBJID
, M.PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = M.PROD_GROUP_OBJID) AS PROD_GROUP_NAME
, M.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = M.PROD_OBJID) AS PROD_NAME
, COUNT(P.PART_NO) AS TOTAL_TARGET_PART_CNT
FROM
PMS_DEV_MASTER M,
PMS_TRANSFER_QUALITY QUALITY,
(
SELECT
DP.*,
(SELECT (SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = PART.MATERIAL_TYPE_OBJID) FROM PART_INFO PART WHERE PART.PART_NO = DP.PART_NO AND PART.IS_LAST = 1) AS MATERIAL_TYPE_NAME
FROM PMS_DEV_MASTER_REL_PART_INFO DP
) P,
(
SELECT B.TARGET_OBJID AS PROJECT_OBJID
, B.SUB_OBJID AS PROD_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = B.SUB_OBJID)) AS PROD_GROUP_NAME
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = B.SUB_OBJID) AS PROD_NAME
, A.OEM_OBJID AS OEM_OBJID
, A.CAR_OBJID AS CAR_OBJID
FROM PMS_PJT_INFO A, PMS_REL_PJT_PROD B
WHERE 1=1
AND A.OBJID = B.TARGET_OBJID
AND UPPER(A.STATUS) = 'CONFIRM'
) PROJ_PROD
WHERE 1=1
AND M.OBJID = P.TARGET_OBJID
AND M.OEM_OBJID = QUALITY.OEM_OBJID
AND M.CAR_OBJID = QUALITY.CAR_OBJID
AND UPPER(P.DEV_POINT) = '2REALISTICPRODUCE'
AND P.MATERIAL_TYPE_NAME = '제품'
AND PROJ_PROD.OEM_OBJID = QUALITY.OEM_OBJID
AND PROJ_PROD.CAR_OBJID = QUALITY.CAR_OBJID
AND M.OEM_OBJID = PROJ_PROD.OEM_OBJID
AND M.CAR_OBJID = PROJ_PROD.CAR_OBJID
AND M.PROD_OBJID = PROJ_PROD.prod_objid
GROUP BY QUALITY.OBJID, M.OEM_OBJID, M.CAR_OBJID, M.PROD_GROUP_OBJID, M.PROD_OBJID
) A
) AA
WHERE 1=1
AND AA.GABJI_OBJID = #{transferObjId}
</select>
<!-- 갑지별 치종 설비이관 진행현황 PIE Chart -->
<select id="getFacilityTransferStatusPieChart" parameterType="map" resultType="map">
SELECT
INFO.TRANSFER_OBJID,
SUM(INFO.APPLY_CNT) AS APPLY_CNT,
SUM(INFO.REJECT_CNT) AS REJECT_CNT,
SUM(INFO.NO_INPUT_CNT) AS NO_INPUT_CNT,
SUM(INFO.REVIEW_CNT) AS REVIEW_CNT
FROM(
SELECT
INFO.*,
CASE WHEN UPPER(HISTORY.RESULT) IN ('ACCEPTAPPLY','APPLY') THEN 1 ELSE 0 END APPLY_CNT,
CASE WHEN UPPER(HISTORY.RESULT) = 'REJECT' THEN 1 ELSE 0 END REJECT_CNT,
CASE WHEN HISTORY.RESULT IS NULL THEN 1 ELSE 0 END NO_INPUT_CNT,
CASE WHEN UPPER(HISTORY.RESULT) = 'REVIEW' THEN 1 ELSE 0 END REVIEW_CNT
FROM(
SELECT
TRANS.OBJID AS TRANSFER_OBJID
, PART.OBJID AS PART_OBJID
, PART.EO_OBJID AS EO_OBJID
, TRANS.OEM_OBJID AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = TRANS.OEM_OBJID) AS OEM_NAME
, TRANS.CAR_OBJID AS CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS CAR_CODE
, (SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS MODEL_CODE
, PART.PRODUCT_GROUP_OBJID AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PART.PRODUCT_GROUP_OBJID) AS PROD_GROUP_NAME
, PART.PRODUCT_OBJID AS PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PART.PRODUCT_OBJID) AS PROD_NAME
, PART.PART_NO AS PART_NO
, PART.PART_NAME AS PART_NAME
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = PART.PART_NO)) AS PROBLEM_ALL_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = PART.PART_NO) AND UPPER(STATUS) = 'COMPLETE') AS PROBLEM_COMPLETE_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = PART.PART_NO) AND UPPER(STATUS) = 'CREATE') AS PROBLEM_ONGOING_CNT
FROM PART_INFO PART, PMS_TRANSFER_FACILITIES TRANS
WHERE 1=1
AND PART.CAR_OBJID = TRANS.CAR_OBJID
AND PART.MATERIAL_TYPE_OBJID = (SELECT OBJID FROM MATERIAL_TYPE_MNG WHERE MATERIAL_TYPE_NAME = '제품')
AND PART.IS_LAST = 1
AND TRANS.OBJID = #{objId}
ORDER BY PART.PART_NO, EO_ISSUE_DATE
)INFO,(
SELECT
OBJID,
TARGET_OBJID,
PROD_GROUP_OBJID,
PROD_OBJID,
PART_NO,
RESULT,
REASON,
DESCRIPTION,
WRITER,
REGDATE,
IS_LAST
FROM PMS_TRANSFER_FACILITIES_HIS
)HISTORY
WHERE 1=1
AND INFO.TRANSFER_OBJID = HISTORY.TARGET_OBJID(+)
AND INFO.PART_NO = HISTORY.PART_NO(+)
AND HISTORY.IS_LAST(+) = 'Y'
)INFO WHERE 1=1 GROUP BY INFO.TRANSFER_OBJID
</select>
<!-- 갑지별 치종 설비이관 진행현황 PIE Chart Drill down Chart -->
<select id="getFacilityTransferProductStatusDrillDownChart" parameterType="map" resultType="map">
SELECT
INFO.TRANSFER_OBJID,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
SUM(INFO.APPLY_CNT) AS APPLY_CNT,
SUM(INFO.REJECT_CNT) AS REJECT_CNT,
SUM(INFO.NO_INPUT_CNT) AS NO_INPUT_CNT,
SUM(INFO.REVIEW_CNT) AS REVIEW_CNT
FROM(
SELECT
INFO.*,
CASE WHEN UPPER(HISTORY.RESULT) IN ('ACCEPTAPPLY','APPLY') THEN 1 ELSE 0 END APPLY_CNT,
CASE WHEN UPPER(HISTORY.RESULT) = 'REJECT' THEN 1 ELSE 0 END REJECT_CNT,
CASE WHEN HISTORY.RESULT IS NULL THEN 1 ELSE 0 END NO_INPUT_CNT,
CASE WHEN UPPER(HISTORY.RESULT) = 'REVIEW' THEN 1 ELSE 0 END REVIEW_CNT
FROM(
SELECT
TRANS.OBJID AS TRANSFER_OBJID
, PART.OBJID AS PART_OBJID
, PART.EO_OBJID AS EO_OBJID
, TRANS.OEM_OBJID AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = TRANS.OEM_OBJID) AS OEM_NAME
, TRANS.CAR_OBJID AS CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS CAR_CODE
, (SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS MODEL_CODE
, PART.PRODUCT_GROUP_OBJID AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PART.PRODUCT_GROUP_OBJID) AS PROD_GROUP_NAME
, PART.PRODUCT_OBJID AS PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PART.PRODUCT_OBJID) AS PROD_NAME
, PART.PART_NO AS PART_NO
, PART.PART_NAME AS PART_NAME
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = PART.PART_NO)) AS PROBLEM_ALL_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = PART.PART_NO) AND UPPER(STATUS) = 'COMPLETE') AS PROBLEM_COMPLETE_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = PART.PART_NO) AND UPPER(STATUS) = 'CREATE') AS PROBLEM_ONGOING_CNT
FROM PART_INFO PART, PMS_TRANSFER_FACILITIES TRANS
WHERE 1=1
AND PART.CAR_OBJID = TRANS.CAR_OBJID
AND PART.MATERIAL_TYPE_OBJID = (SELECT OBJID FROM MATERIAL_TYPE_MNG WHERE MATERIAL_TYPE_NAME = '제품')
AND PART.IS_LAST = 1
AND TRANS.OBJID = #{objId}
ORDER BY PART.PART_NO, EO_ISSUE_DATE
)INFO,(
SELECT
OBJID,
TARGET_OBJID,
PROD_GROUP_OBJID,
PROD_OBJID,
PART_NO,
RESULT,
REASON,
DESCRIPTION,
WRITER,
REGDATE,
IS_LAST
FROM PMS_TRANSFER_FACILITIES_HIS
)HISTORY
WHERE 1=1
AND INFO.TRANSFER_OBJID = HISTORY.TARGET_OBJID(+)
AND INFO.PART_NO = HISTORY.PART_NO(+)
AND HISTORY.IS_LAST(+) = 'Y'
)INFO WHERE 1=1 GROUP BY INFO.TRANSFER_OBJID,INFO.PROD_GROUP_OBJID
</select>
<!-- 설비이관 차종, 제품별 문제점, 문서이관율을 보여준다. -->
<select id="getFacilityTransferProductCompleteRatioColumnChart" parameterType="map" resultType="map">
SELECT
A.*
, (CASE WHEN PROBLEM_COMPLETE_CNT = 0 THEN 0 ELSE (PROBLEM_COMPLETE_CNT / PROBLEM_ALL_CNT)*100 END) AS PROBLEM_COMPLETE_RATIO
, NVL(DOC_TRANSFER_RESULT.DOC_TOTAL_CNT,0) AS DOC_TOTAL_CNT
, NVL(DOC_TRANSFER_RESULT.DOC_PROGRESS_TOTAL_CNT,0) AS DOC_PROGRESS_TOTAL_CNT
, NVL(DOC_TRANSFER_RESULT.DOC_OK_TOTAL_CNT,0) AS DOC_OK_TOTAL_CNT
, (CASE WHEN DOC_TRANSFER_RESULT.DOC_OK_TOTAL_CNT = 0 THEN 0 ELSE (DOC_TRANSFER_RESULT.DOC_OK_TOTAL_CNT / DOC_TRANSFER_RESULT.DOC_TOTAL_CNT)*100 END) AS DOC_COMPLETE_RATIO
FROM (
SELECT TRANS.OBJID TRANSFER_OBJID
, PJT.OBJID AS PROJECT_OBJID
, TRANS.OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = TRANS.OEM_OBJID) AS OEM_NAME
, TRANS.CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS CAR_CODE
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PJT_PROD.SUB_OBJID) AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PJT_PROD.SUB_OBJID)) AS PROD_GROUP_NAME
, PJT_PROD.SUB_OBJID AS PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PJT_PROD.SUB_OBJID) AS PROD_NAME
, (SELECT COUNT(*) FROM PMS_PROBLEM_GROUP G, PMS_PROBLEM_INFO P WHERE G.OBJID = P.TARGET_OBJID AND G.TEST_TYPE_OBJID = (SELECT OBJID FROM TEST_TYPE_MNG WHERE TEST_TYPE_NAME = '설비 이관검사') AND G.CAR_OBJID = TRANS.CAR_OBJID AND G.PROD_OBJID = PJT_PROD.SUB_OBJID) AS PROBLEM_ALL_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_GROUP G, PMS_PROBLEM_INFO P WHERE G.OBJID = P.TARGET_OBJID AND G.TEST_TYPE_OBJID = (SELECT OBJID FROM TEST_TYPE_MNG WHERE TEST_TYPE_NAME = '설비 이관검사') AND G.CAR_OBJID = TRANS.CAR_OBJID AND G.PROD_OBJID = PJT_PROD.SUB_OBJID AND UPPER(P.STATUS) = 'COMPLETE') AS PROBLEM_COMPLETE_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_GROUP G, PMS_PROBLEM_INFO P WHERE G.OBJID = P.TARGET_OBJID AND G.TEST_TYPE_OBJID = (SELECT OBJID FROM TEST_TYPE_MNG WHERE TEST_TYPE_NAME = '설비 이관검사') AND G.CAR_OBJID = TRANS.CAR_OBJID AND G.PROD_OBJID = PJT_PROD.SUB_OBJID AND UPPER(P.STATUS) = 'CREATE') AS PROBLEM_ONGOING_CNT
, (SELECT WM_CONCAT(DISTINCT RESULT) FROM PMS_TRANSFER_FACILITIES_HIS WHERE TARGET_OBJID = TRANS.OBJID AND PROD_OBJID = PJT_PROD.SUB_OBJID) AS RESULT_CONCAT
, (SELECT TO_CHAR(REGDATE, 'YYYY-MM-DD') FROM (SELECT A.CAR_OBJID, B.PROD_OBJID, B.REGDATE FROM PMS_TRANSFER_FACILITIES A, PMS_TRANSFER_FACILITIES_HIS B WHERE 1=1 AND A.OBJID = B.TARGET_OBJID AND B.IS_LAST = 'Y' ORDER BY B.REGDATE DESC) WHERE CAR_OBJID = TRANS.CAR_OBJID AND PROD_OBJID = PJT_PROD.SUB_OBJID AND ROWNUM = 1) AS LAST_DATE
FROM PMS_TRANSFER_FACILITIES TRANS, PMS_PJT_INFO PJT, PMS_REL_PJT_PROD PJT_PROD
WHERE 1=1
AND TRANS.CAR_OBJID = PJT.CAR_OBJID
AND PJT.OBJID = PJT_PROD.TARGET_OBJID
AND TRANS.OBJID = #{objId}
) A,
(
SELECT
CAR_OBJID,
PRODUCT_GROUP_OBJID,
CASE WHEN SUM(CNT) != 0 THEN ROUND((SUM(OK_CNT)/SUM(CNT))*100,0) ELSE 0 END OK_RATIO,
SUM(CNT) AS DOC_TOTAL_CNT,
SUM(OK_CNT) AS DOC_OK_TOTAL_CNT,
SUM(PROGRESS_CNT) AS DOC_PROGRESS_TOTAL_CNT
FROM(
SELECT
OBJID,
CAR_OBJID,
(SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) AS PRODUCT_GROUP_OBJID,
PRODUCT_OBJID,
DOC_OBJID,
(SELECT TRANSLATE_TYPE FROM PMS_TRANSLATE_DOC_MNG WHERE OBJID = DOC_OBJID) AS TRANSLATE_TYPE,
STATUS,
1 AS CNT,
CASE WHEN UPPER(STATUS) = 'OK' THEN 1 ELSE 0 END OK_CNT,
CASE WHEN STATUS IS NULL THEN 1 ELSE 0 END PROGRESS_CNT
FROM PMS_TRANS_DOC_INFO
)WHERE UPPER(TRANSLATE_TYPE) = 'FACILITY'
GROUP BY CAR_OBJID,PRODUCT_GROUP_OBJID
)DOC_TRANSFER_RESULT
WHERE 1=1
AND A.CAR_OBJID = DOC_TRANSFER_RESULT.CAR_OBJID(+)
AND A.PROD_GROUP_OBJID = DOC_TRANSFER_RESULT.PRODUCT_GROUP_OBJID(+)
ORDER BY PROD_NAME
</select>
<select id="getFacilityTransferProductStatusBarChart" parameterType="map" resultType="map">
SELECT
INFO.TRANSFER_OBJID,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
SUM(INFO.APPLY_CNT) AS APPLY_CNT,
SUM(INFO.REJECT_CNT) AS REJECT_CNT,
SUM(INFO.NO_INPUT_CNT) AS NO_INPUT_CNT,
SUM(INFO.REVIEW_CNT) AS REVIEW_CNT
FROM(
SELECT
INFO.*,
CASE WHEN UPPER(HISTORY.RESULT) IN ('ACCEPTAPPLY','APPLY') THEN 1 ELSE 0 END APPLY_CNT,
CASE WHEN UPPER(HISTORY.RESULT) = 'REJECT' THEN 1 ELSE 0 END REJECT_CNT,
CASE WHEN HISTORY.RESULT IS NULL THEN 1 ELSE 0 END NO_INPUT_CNT,
CASE WHEN UPPER(HISTORY.RESULT) = 'REVIEW' THEN 1 ELSE 0 END REVIEW_CNT
FROM(
SELECT
TRANS.OBJID AS TRANSFER_OBJID
, PART.OBJID AS PART_OBJID
, PART.EO_OBJID AS EO_OBJID
, TRANS.OEM_OBJID AS OEM_OBJID
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = TRANS.OEM_OBJID) AS OEM_NAME
, TRANS.CAR_OBJID AS CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS CAR_CODE
, (SELECT MODEL_CODE FROM CAR_MNG WHERE OBJID = TRANS.CAR_OBJID) AS MODEL_CODE
, PART.PRODUCT_GROUP_OBJID AS PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PART.PRODUCT_GROUP_OBJID) AS PROD_GROUP_NAME
, PART.PRODUCT_OBJID AS PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PART.PRODUCT_OBJID) AS PROD_NAME
, PART.PART_NO AS PART_NO
, PART.PART_NAME AS PART_NAME
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = PART.PART_NO)) AS PROBLEM_ALL_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = PART.PART_NO) AND UPPER(STATUS) = 'COMPLETE') AS PROBLEM_COMPLETE_CNT
, (SELECT COUNT(*) FROM PMS_PROBLEM_INFO WHERE PART_NO IN (SELECT PART_NO FROM PART_BOM_QTY CONNECT BY PRIOR PART_NO = PARENT_PART_NO START WITH PART_NO = PART.PART_NO) AND UPPER(STATUS) = 'CREATE') AS PROBLEM_ONGOING_CNT
FROM PART_INFO PART, PMS_TRANSFER_FACILITIES TRANS
WHERE 1=1
AND PART.CAR_OBJID = TRANS.CAR_OBJID
AND PART.MATERIAL_TYPE_OBJID = (SELECT OBJID FROM MATERIAL_TYPE_MNG WHERE MATERIAL_TYPE_NAME = '제품')
AND PART.IS_LAST = 1
ORDER BY PART.PART_NO, EO_ISSUE_DATE
)INFO,(
SELECT
OBJID,
TARGET_OBJID,
PROD_GROUP_OBJID,
PROD_OBJID,
PART_NO,
RESULT,
REASON,
DESCRIPTION,
WRITER,
REGDATE,
IS_LAST
FROM PMS_TRANSFER_FACILITIES_HIS
)HISTORY
WHERE 1=1
AND INFO.TRANSFER_OBJID = HISTORY.TARGET_OBJID(+)
AND INFO.PART_NO = HISTORY.PART_NO(+)
AND HISTORY.IS_LAST(+) = 'Y'
)INFO WHERE 1=1
AND INFO.TRANSFER_OBJID = #{objId}
AND INFO.PROD_OBJID = #{productObjId}
GROUP BY INFO.TRANSFER_OBJID,INFO.PROD_OBJID
</select>
<!-- 지시사항 이행관리 -->
<select id="instructionMngList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY REG_DATE DESC) AS RNUM,
OBJID,
TARGET_OBJID,
DIVISION,
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = IM.DIVISION) AS DIVISION_TITLE,
CLASS,
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = IM.CLASS) AS CLASS_TITLE,
TITLE,
CONTENTS,
MEASURE_DEPT,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = IM.MEASURE_DEPT) AS MEASURE_DEPT_TITLE,
MEASURE_DEPT1,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = IM.MEASURE_DEPT1) AS MEASURE_DEPT1_TITLE,
MEASURE_DEPT2,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = IM.MEASURE_DEPT2) AS MEASURE_DEPT2_TITLE,
MEASURE_DEPT3,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = IM.MEASURE_DEPT3) AS MEASURE_DEPT3_TITLE,
MEASURE_DEPT4,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = IM.MEASURE_DEPT4) AS MEASURE_DEPT4_TITLE,
MEASURE_DATE,
WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = IM.WRITER) AS DEPT_TITLE,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IM.WRITER) AS USER_TITLE,
REG_DATE,
TO_CHAR(REG_DATE,'YYYY-MM-DD') AS REG_DATE_TITLE,
STATUS,
CASE UPPER(STATUS)
WHEN 'CREATE' THEN '등록중'
WHEN 'RELEASE' THEN '배포완료'
WHEN 'COMPLETE' THEN '이행완료'
ELSE ''
END STATUS_TITLE,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO A WHERE A.TARGET_OBJID::VARCHAR = IM.OBJID AND DOC_TYPE='INSTRUCTION_MNG_FILE' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT
FROM
INSTRUCTION_MNG IM
WHERE 1=1
<if test="SEARCH_YEAR != null and SEARCH_YEAR !=''">
AND TO_CHAR(REG_DATE,'YYYY') = #{SEARCH_YEAR}
</if>
<if test="PROJECT_OBJID != null and PROJECT_OBJID !=''">
AND IM.TARGET_OBJID = #{PROJECT_OBJID}
</if>
<if test="SEARCH_INCLUDE_COMPLETE != 'INCLUDE' ">
AND UPPER(STATUS) != 'COMPLETE'
</if>
</select>
<select id="instructionMngInfo" parameterType="map" resultType="map">
SELECT
OBJID,
TARGET_OBJID,
DIVISION,
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = IM.DIVISION) AS DIVISION_TITLE,
CLASS,
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = IM.CLASS) AS CLASS_TITLE,
TITLE,
CONTENTS,
MEASURE_DEPT,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = IM.MEASURE_DEPT) AS MEASURE_DEPT_TITLE,
MEASURE_DEPT1,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = IM.MEASURE_DEPT1) AS MEASURE_DEPT1_TITLE,
MEASURE_DEPT2,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = IM.MEASURE_DEPT2) AS MEASURE_DEPT2_TITLE,
MEASURE_DEPT3,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = IM.MEASURE_DEPT3) AS MEASURE_DEPT3_TITLE,
MEASURE_DEPT4,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = IM.MEASURE_DEPT4) AS MEASURE_DEPT4_TITLE,
MEASURE_DATE,
WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = IM.WRITER) AS DEPT_TITLE,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IM.WRITER) AS USER_TITLE,
REG_DATE,
TO_CHAR(REG_DATE,'YYYY-MM-DD') AS REG_DATE_TITLE,
STATUS,
CASE UPPER(STATUS)
WHEN 'CREATE' THEN '등록중'
WHEN 'RELEASE' THEN '배포완료'
WHEN 'COMPLETE' THEN '이행완료'
ELSE ''
END STATUS_TITLE,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO A WHERE A.TARGET_OBJID::VARCHAR = IM.OBJID AND DOC_TYPE='INSTRUCTION_MNG_FILE' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT
FROM
INSTRUCTION_MNG IM
WHERE 1=1
AND IM.OBJID = #{OBJID}
</select>
<update id="saveInstructionMng" parameterType="map">
INSERT INTO INSTRUCTION_MNG
(
OBJID,
TARGET_OBJID,
DIVISION,
CLASS,
TITLE,
CONTENTS,
MEASURE_DEPT,
MEASURE_DEPT1,
MEASURE_DEPT2,
MEASURE_DEPT3,
MEASURE_DEPT4,
MEASURE_USER_ID,
MEASURE_DATE,
WRITER,
REG_DATE,
STATUS
)VALUES(
#{OBJID},
#{TARGET_OBJID},
#{DIVISION},
#{CLASS},
#{TITLE},
#{CONTENTS},
#{MEASURE_DEPT},
#{MEASURE_DEPT1},
#{MEASURE_DEPT2},
#{MEASURE_DEPT3},
#{MEASURE_DEPT4},
#{MEASURE_USER_ID},
#{MEASURE_DATE},
#{WRITER},
NOW(),
'create'
) ON CONFLICT (OBJID) DO
UPDATE
SET
TARGET_OBJID = #{TARGET_OBJID},
DIVISION = #{DIVISION},
CLASS = #{CLASS},
TITLE = #{TITLE},
CONTENTS = #{CONTENTS},
MEASURE_DEPT = #{MEASURE_DEPT},
MEASURE_DEPT1 = #{MEASURE_DEPT1},
MEASURE_DEPT2 = #{MEASURE_DEPT2},
MEASURE_DEPT3 = #{MEASURE_DEPT3},
MEASURE_DEPT4 = #{MEASURE_DEPT4},
MEASURE_DATE = #{MEASURE_DATE},
WRITER = #{WRITER},
STATUS = #{STATUS}
</update>
<delete id="deleteInstructionMng" parameterType="map">
DELETE FROM INSTRUCTION_MNG WHERE OBJID = #{OBJID}
</delete>
<delete id="changeStatusInstructionMng" parameterType="map">
UPDATE INSTRUCTION_MNG
SET STATUS = #{STATUS}
WHERE OBJID = #{OBJID}
</delete>
<!-- hwangeuidon end -->
<!--
지시사항이행관리 new 240618
-->
<select id="instructionMngList2" parameterType="map" resultType="map">
SELECT
<!--
ROW_NUMBER() OVER(ORDER BY REG_DATE DESC) AS RNUM,
-->
OBJID,
TARGET_OBJID,
DIVISION,
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = IM.DIVISION) AS DIVISION_TITLE,
CLASS,
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = IM.CLASS) AS CLASS_TITLE,
YEAR_MONTH_WEEK,
TITLE,
CONTENTS,
WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = IM.WRITER) AS DEPT_TITLE,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IM.WRITER) AS WRITER_TITLE,
REG_DATE,
TO_CHAR(REG_DATE,'YYYY-MM-DD') AS REG_DATE_TITLE,
STATUS,
CASE UPPER(STATUS)
WHEN 'CREATE' THEN '등록중'
WHEN 'RELEASE' THEN '배포완료'
WHEN 'COMPLETE' THEN '이행완료'
ELSE ''
END STATUS_TITLE
,(SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT USER_NAME), ',') FROM INSTRUCTION_MNG2_TASK T, USER_INFO U WHERE T.MASTER_OBJID = IM.OBJID AND T.MEASURE_USER_ID = U.USER_ID) MEASURE_USER_NAMES
,(SELECT COUNT(1) FROM INSTRUCTION_MNG2_TASK A WHERE A.MASTER_OBJID = IM.OBJID) AS TASK_CNT
,(SELECT COUNT(1) FROM INSTRUCTION_MNG2_TASK A WHERE A.MASTER_OBJID = IM.OBJID AND NVL(MEASURE_DATE, '') != '') AS TASK_CNT_DONE
,(SELECT COUNT(1) FROM INSTRUCTION_MNG2_TASK A WHERE A.MASTER_OBJID = IM.OBJID AND NVL(MEASURE_DATE, '') = '' AND NVL(MEASURE_PLAN_DATE, '') &lt;= TO_CHAR(NOW(), 'yyyy-MM-dd') ) AS TASK_CNT_ING
,(SELECT COUNT(1) FROM INSTRUCTION_MNG2_TASK A WHERE A.MASTER_OBJID = IM.OBJID AND NVL(MEASURE_DATE, '') = '' AND NVL(MEASURE_PLAN_DATE, '') > TO_CHAR(NOW(), 'yyyy-MM-dd') ) AS TASK_CNT_DELAY
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO A WHERE A.PARENT_TARGET_OBJID::VARCHAR = IM.OBJID AND DOC_TYPE='INSTRUCTION_MNG2_TASK_FILE' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT
FROM
INSTRUCTION_MNG2 IM
WHERE 1=1
<if test="SEARCH_YEAR != null and SEARCH_YEAR !=''">
AND TO_CHAR(REG_DATE,'YYYY') = #{SEARCH_YEAR}
</if>
<if test="SEARCH_DIVISION != null and SEARCH_DIVISION !=''">
AND IM.DIVISION = #{SEARCH_DIVISION}
</if>
<if test="SEARCH_CLASS != null and SEARCH_CLASS !=''">
AND IM.CLASS = #{SEARCH_CLASS}
</if>
<if test="PROJECT_OBJID != null and PROJECT_OBJID !=''">
AND IM.TARGET_OBJID = #{PROJECT_OBJID}
</if>
<if test="SEARCH_INCLUDE_COMPLETE != 'INCLUDE' ">
AND UPPER(STATUS) != 'COMPLETE'
</if>
ORDER BY YEAR_MONTH_WEEK DESC
<!--
ORDER BY REG_DATE DESC
-->
</select>
<select id="instructionMngTaskList" parameterType="map" resultType="map">
SELECT
IMT.OBJID,
IMT.MASTER_OBJID,
IMT.MEASURE_USER_ID,
(SELECT EMAIL FROM USER_INFO U WHERE U.USER_ID = IMT.MEASURE_USER_ID) EMAIL,
IMT.MEASURE_PLAN_DATE,
IMT.MEASURE_DATE,
IMT.CONTENTS,
IMT.CONTENTS_IMPLEMENT,
IMT.WRITER,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO A WHERE A.TARGET_OBJID::VARCHAR = IMT.OBJID AND DOC_TYPE='INSTRUCTION_MNG2_TASK_FILE' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT
,IM.YEAR_MONTH_WEEK
FROM
INSTRUCTION_MNG2_TASK IMT
,INSTRUCTION_MNG2 IM
WHERE 1=1
AND IM.OBJID = IMT.MASTER_OBJID
AND IMT.MASTER_OBJID = #{OBJID}
<if test="PROJECT_OBJID != null and PROJECT_OBJID !=''">
AND IMT.TARGET_OBJID = #{PROJECT_OBJID}
</if>
<!--
<if test="checkArr != null and checkArr !=''">
AND <![CDATA[ (CASE WHEN OBJID = '' THEN 0 ELSE POSITION(OBJID||',' IN #{checkArr}||',') END) > 0 ]]>
</if>
-->
ORDER BY IMT.MEASURE_PLAN_DATE, CONTENTS
</select>
<select id="instructionMngInfo2" parameterType="map" resultType="map">
SELECT
OBJID,
TARGET_OBJID,
DIVISION,
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = IM.DIVISION) AS DIVISION_TITLE,
CLASS,
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = IM.CLASS) AS CLASS_TITLE,
YEAR_MONTH_WEEK,
TITLE,
CONTENTS,
USER_IDS,
<!--
MEASURE_DATE,
-->
WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = IM.WRITER) AS DEPT_TITLE,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IM.WRITER) AS USER_TITLE,
REG_DATE,
TO_CHAR(REG_DATE,'YYYY-MM-DD') AS REG_DATE_TITLE,
STATUS,
CASE UPPER(STATUS)
WHEN 'CREATE' THEN '등록중'
WHEN 'RELEASE' THEN '배포완료'
WHEN 'COMPLETE' THEN '이행완료'
ELSE ''
END STATUS_TITLE,
<!--
(SELECT ARRAY_TO_STRING(ARRAY_AGG(USER_ID), ',') FROM INSTRUCTION_MNG2_USER U WHERE U.MASTER_OBJID = IM.OBJID) USER_IDS,
-->
(SELECT ARRAY_TO_STRING(ARRAY_AGG(MEASURE_USER_ID), ',') FROM INSTRUCTION_MNG2_TASK U WHERE U.MASTER_OBJID = IM.OBJID) MEASURE_USER_IDS,
(SELECT ARRAY_TO_STRING(ARRAY_AGG(USER_NAME), ',') FROM INSTRUCTION_MNG2_TASK T, USER_INFO U WHERE T.MASTER_OBJID = IM.OBJID AND T.MEASURE_USER_ID = U.USER_ID) MEASURE_USER_NAMES,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO A WHERE A.TARGET_OBJID::VARCHAR = IM.OBJID AND DOC_TYPE='INSTRUCTION_MNG2_FILE' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT
FROM
INSTRUCTION_MNG2 IM
WHERE 1=1
AND IM.OBJID = #{OBJID}
</select>
<update id="saveInstructionMng2" parameterType="map">
INSERT INTO INSTRUCTION_MNG2
(
OBJID,
TARGET_OBJID,
DIVISION,
CLASS,
YEAR_MONTH_WEEK,
TITLE,
USER_IDS,
CONTENTS,
<!--
MEASURE_DATE,
-->
WRITER,
REG_DATE,
STATUS
)VALUES(
#{OBJID},
#{TARGET_OBJID},
#{DIVISION},
#{CLASS},
#{YEAR_MONTH_WEEK},
#{TITLE},
#{USER_IDS},
#{CONTENTS},
<!--
#{MEASURE_DATE},
-->
#{WRITER},
NOW(),
'create'
) ON CONFLICT (OBJID) DO
UPDATE
SET
TARGET_OBJID = #{TARGET_OBJID},
DIVISION = #{DIVISION},
CLASS = #{CLASS},
YEAR_MONTH_WEEK = #{YEAR_MONTH_WEEK},
TITLE = #{TITLE},
USER_IDS = #{USER_IDS},
CONTENTS = #{CONTENTS},
<!--
MEASURE_DATE = #{MEASURE_DATE},
-->
WRITER = #{WRITER},
STATUS = #{STATUS}
</update>
<update id="saveInstructionMng2user" parameterType="map">
INSERT INTO INSTRUCTION_MNG2_USER
(
OBJID,
MASTER_OBJID,
WRITER,
REG_DATE,
USER_ID
)VALUES(
#{OBJID},
#{MASTER_OBJID},
#{WRITER},
NOW(),
#{USER_ID}
) ON CONFLICT (OBJID) DO
UPDATE
SET
USER_ID = #{USER_ID}
</update>
<update id="saveInstructionMng2task" parameterType="map">
INSERT INTO INSTRUCTION_MNG2_TASK
(
OBJID,
MASTER_OBJID,
WRITER,
REG_DATE,
MEASURE_USER_ID,
MEASURE_PLAN_DATE,
MEASURE_DATE,
CONTENTS,
CONTENTS_IMPLEMENT
)VALUES(
#{OBJID},
#{MASTER_OBJID},
#{WRITER},
NOW(),
#{MEASURE_USER_ID},
#{MEASURE_PLAN_DATE},
#{MEASURE_DATE},
#{CONTENTS},
#{CONTENTS_IMPLEMENT}
) ON CONFLICT (OBJID) DO
UPDATE
SET
MEASURE_USER_ID = #{MEASURE_USER_ID}
,MEASURE_PLAN_DATE = #{MEASURE_PLAN_DATE}
,MEASURE_DATE = #{MEASURE_DATE}
,CONTENTS = #{CONTENTS}
,CONTENTS_IMPLEMENT = #{CONTENTS_IMPLEMENT}
</update>
<delete id="deleteInstructionMng2" parameterType="map">
DELETE FROM INSTRUCTION_MNG2 WHERE OBJID = #{OBJID} OR
<![CDATA[ (CASE WHEN OBJID = '' THEN 0 ELSE POSITION(OBJID||',' IN #{checkArr}||',') END) > 0 ]]>
</delete>
<delete id="deleteInstructionMng2user" parameterType="map">
DELETE FROM INSTRUCTION_MNG2_USER WHERE MASTER_OBJID = #{MASTER_OBJID}
</delete>
<delete id="deleteInstructionMng2task" parameterType="map">
DELETE FROM INSTRUCTION_MNG2_TASK WHERE MASTER_OBJID = #{MASTER_OBJID}
<if test="NOT_OBJIDS !=null and NOT_OBJIDS != '' and NOT_OBJIDS.size() > 0 ">
AND OBJID NOT IN
<foreach collection="NOT_OBJIDS" item="objid" index="index" separator="," open="(" close=")">
'${objid}'
</foreach>
</if>
</delete>
<delete id="changeStatusInstructionMng2" parameterType="map">
UPDATE INSTRUCTION_MNG2
SET STATUS = #{STATUS}
WHERE OBJID = #{OBJID} OR
<![CDATA[ (CASE WHEN OBJID = '' THEN 0 ELSE POSITION(OBJID||',' IN #{checkArr}||',') END) > 0 ]]>
</delete>
</mapper>