- 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
6751 lines
344 KiB
XML
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 < 1 THEN '계획미수립'
|
|
WHEN SETUP_RATETOTAL < 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') < 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') < 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') < 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') < 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') < 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, '') <= 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> |