Files
wace_plm/src/com/pms/mapper/productionplanning.xml
chpark da06c4684c Initial commit: WACE PLM with database initialization features
- Add Docker Compose configurations for dev, prod, and standalone environments
- Add database initialization scripts (init-db.sh, init-db-docker.sh)
- Add enhanced start-docker-linux.sh with DB init support
- Add comprehensive database initialization guide
- Support for automatic dbexport.pgsql import on first run
- Include safety checks for production environment
2025-08-29 15:46:08 +09:00

2873 lines
110 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="productionplanning">
<!-- 생산관리 -> 현황 -->
<select id="planningdashboardGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
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 !='')::float / (SELECT COUNT(1) FROM PLANNING_ISSUE AS O WHERE O.PROJECT_OBJID = T.OBJID AND O.status='release' )::FLOAT * 100)::numeric, 1)
END AS issue_rate
,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_RATE
,(SELECT MAX(SETUP_ACT_END) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PARENT_OBJID IS NOT NULL OR PARENT_OBJID != '')) AS SETUP_ACT_END
<!-- ,(SELECT coalesce(SUM(COALESCE(EMPLOYEES_IN,'0')::integer+COALESCE(EMPLOYEES_OUT,'0')::integer),'0') FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PARENT_OBJID IS NOT NULL OR PARENT_OBJID != '')) AS EMPLOYEES_TOTAL -->
,Q.ASSEMBLY_DATE_END
<!-- ,Q.ASSEMBLY_EMPLOYEES_TOTAL
,R.ASSEMBLY_RATE
-->
,ROUND((AS_RATE_SUM / (SELECT COUNT(1) FROM PMS_WBS_TASK W WHERE W.CONTRACT_OBJID = T.OBJID) ),1) AS ASSEMBLY_RATE
,OBJID
,CATEGORY_CD
,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME
,CUSTOMER_OBJID
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME
,PRODUCT
,CODE_NAME(PRODUCT) AS PRODUCT_NAME
,(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
,STATUS_CD
,CODE_NAME(STATUS_CD) AS STATUS_NAME
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,CODE_NAME(FACILITY) AS FACILITY_NAME
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CODE_NAME(BUS_CAL_CD) AS BUS_CAL_NAME
,CATEGORY1_CD
,CODE_NAME(CATEGORY1_CD) AS CATEGORY1_NAME
,CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CHG_USER_ID ) AS CHG_USER_NAME
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,CODE_NAME(RESULT_CD) AS RESULT_NAME
,PROJECT_NO
,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
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,CODE_NAME(CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,REGDATE
,TO_CHAR(REGDATE,'YYYY-MM-DD') AS REG_DATE
,WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CODE_NAME(CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CODE_NAME(MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,CONTRACT_RESULT
,CODE_NAME(CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,CODE_NAME(AREA_CD) AS AREA_NAME
,PROJECT_NAME
,MECHANICAL_TYPE
,coalesce(P.WORK_HOUR , '0') as PRODUCTION_INPUT /*조립생산*/
,coalesce(O.WORK_HOUR , '0') as OUTSOURCING /*조립외주*/
,coalesce(P.WORK_HOUR , '0')::numeric + coalesce(O.WORK_HOUR , '0')::numeric as ASSEMBLY_EMPLOYEES_TOTAL
,coalesce(SP.WORK_HOUR , '0') as S_PRODUCTION_INPUT /*셋업생산*/
,coalesce(SO.WORK_HOUR , '0') as S_OUTSOURCING /*셋업외주*/
,coalesce(SP.WORK_HOUR , '0')::numeric + coalesce(SO.WORK_HOUR , '0')::numeric as EMPLOYEES_TOTAL
FROM
PROJECT_MGMT AS T
LEFT OUTER JOIN
(SELECT
P.CONTRACT_OBJID,
MAX(ASSEMBLY_DATE) as ASSEMBLY_DATE_END
<!-- SUM(CASE WHEN INSOURCING='' AND INSOURCING IS NOT NULL THEN '0' ELSE INSOURCING END ::INTEGER)+SUM(CASE WHEN OUTSOURCING='' AND OUTSOURCING IS NOT NULL THEN '0' ELSE OUTSOURCING END ::INTEGER) as ASSEMBLY_EMPLOYEES_TOTAL -->
FROM
(SELECT
A.* ,
T.CONTRACT_OBJID
FROM
ASSEMBLY_WBS_TASK A
LEFT OUTER JOIN PART_BOM_REPORT T
ON A.PARENT_OBJID = T.OBJID) AS P
GROUP BY CONTRACT_OBJID) Q
ON Q.CONTRACT_OBJID = T.OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID,
SUM(AS_RATE) AS_RATE_SUM
FROM
(SELECT
OBJID
,CONTRACT_OBJID
,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 = T.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 = T.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 = T.OBJID and PM.part_type is not null and PM.part_type != '')) * 100), 1)
END AS AS_RATE
<!--, CASE WHEN (SELECT SUM(CASE WHEN RECEIVE_QTY='' AND RECEIVE_QTY IS NOT NULL THEN '0' ELSE RECEIVE_QTY END ::INTEGER) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID) = 0
THEN 0
ELSE
ROUND(((SELECT SUM(CASE WHEN RECEIVE_QTY='' AND RECEIVE_QTY IS NOT NULL THEN '0' ELSE RECEIVE_QTY END ::INTEGER) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID
AND ASSEMBLY_USER_ID IS NOT NULL AND ASSEMBLY_USER_ID !='' AND ASSEMBLY_DATE IS NOT NULL AND ASSEMBLY_DATE!='' AND (INSOURCING IS NOT NULL OR INSOURCING!='')
AND (OUTSOURCING IS NOT NULL OR OUTSOURCING!='')
)::NUMERIC / (SELECT SUM(CASE WHEN RECEIVE_QTY='' AND RECEIVE_QTY IS NOT NULL THEN '0' ELSE RECEIVE_QTY END ::INTEGER) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID) * 100),1)
END AS AS_RATE -->
FROM
PART_BOM_REPORT AS T) P
GROUP BY CONTRACT_OBJID) R
ON R.CONTRACT_OBJID = T.OBJID
LEFT OUTER JOIN /*조립생산*/
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT005','DPT023','DPT013')
AND PRODUCTION_TYPE = 'assemble'
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS P
ON P.CONTRACT_OBJID = T.OBJID /*조립외주*/
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND SOURCING_TYPE = 'outsourcing'
AND PRODUCTION_TYPE = 'assemble'
GROUP BY CONTRACT_OBJID ) AS O
ON O.CONTRACT_OBJID = T.OBJID
LEFT OUTER JOIN /*셋업생산*/
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT005','DPT023','DPT013')
AND PRODUCTION_TYPE = 'setup'
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS SP
ON SP.CONTRACT_OBJID = T.OBJID
LEFT OUTER JOIN /*셋업외주*/
(SELECT
CONTRACT_OBJID
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND SOURCING_TYPE = 'outsourcing'
AND PRODUCTION_TYPE = 'setup'
GROUP BY CONTRACT_OBJID ) AS SO
ON SO.CONTRACT_OBJID = T.OBJID
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="category_cd !=null and category_cd != '' ">
AND category_cd = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND product = #{product}
</if>
<if test="status_cd !=null and status_cd !=''">
AND status_cd = #{status_cd}
</if>
<if test="result_cd !=null and result_cd !=''">
AND result_cd = #{result_cd}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(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(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 pm_user_id = #{pm_user_id}
</if>
<if test="location != null and !''.equals(location)">
AND UPPER(LOCATION) LIKE UPPER('%${location}%')
</if>
<if test="setup != null and !''.equals(setup)">
AND UPPER(SETUP) LIKE UPPER('%${setup}%')
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
</select>
<!-- 생산관리 -> 생산계획수립 -->
<select id="planningGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
OBJID
,CATEGORY_CD
,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME
,CUSTOMER_OBJID
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME
,PRODUCT
,CODE_NAME(PRODUCT) AS PRODUCT_NAME
,(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
,STATUS_CD
,CODE_NAME(STATUS_CD) AS STATUS_NAME
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,CODE_NAME(FACILITY) AS FACILITY_NAME
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CODE_NAME(BUS_CAL_CD) AS BUS_CAL_NAME
,CATEGORY1_CD
,CODE_NAME(CATEGORY1_CD) AS CATEGORY1_NAME
,CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CHG_USER_ID ) AS CHG_USER_NAME
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,CODE_NAME(RESULT_CD) AS RESULT_NAME
,PROJECT_NO
,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
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,CODE_NAME(CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,REGDATE
,TO_CHAR(REGDATE,'YYYY-MM-DD') AS REG_DATE
,WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CODE_NAME(CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CODE_NAME(MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,CONTRACT_RESULT
,CODE_NAME(CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,CODE_NAME(AREA_CD) AS AREA_NAME
,PROJECT_NAME
,MECHANICAL_TYPE
,(SELECT COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (O.PRODUCE_PLAN_START !='' OR O.PRODUCE_PLAN_END !=''
OR O.PRODUCE_ACT_START!='' OR O.PRODUCE_ACT_END !='' OR O.PRODUCE_USER_ID !='' )) AS WBS_CNT
,(SELECT MIN(PRODUCE_PLAN_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PRODUCE_PLAN_START !='') AS PRODUCE_PLAN_START
,(SELECT MAX(PRODUCE_PLAN_END) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.PRODUCE_PLAN_END !='') AS PRODUCE_PLAN_END
,(SELECT MIN(PRODUCE_ACT_START) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID 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 AND O.PRODUCE_ACT_END !='' ) AS PRODUCE_ACT_END
,(SELECT COUNT(1) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (O.SETUP_PLAN_START !='' OR O.SETUP_PLAN_END !=''
OR O.SETUP_ACT_START!='' OR O.SETUP_ACT_END !='')) AS SETUP_WBS_CNT
,(SELECT MIN(SETUP_PLAN_START) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.SETUP_PLAN_START !='') AS SETUP_PLAN_START
,(SELECT MAX(SETUP_PLAN_END) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND O.SETUP_PLAN_END !='') AS SETUP_PLAN_END
,(SELECT MIN(SETUP_ACT_START) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID 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 AND O.SETUP_ACT_END !='' ) AS SETUP_ACT_END
FROM PROJECT_MGMT AS T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="category_cd !=null and category_cd != '' ">
AND category_cd = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND product = #{product}
</if>
<if test="status_cd !=null and status_cd !=''">
AND status_cd = #{status_cd}
</if>
<if test="result_cd !=null and result_cd !=''">
AND result_cd = #{result_cd}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(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(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 pm_user_id = #{pm_user_id}
</if>
<if test="location != null and !''.equals(location)">
AND UPPER(LOCATION) LIKE UPPER('%${location}%')
</if>
<if test="setup != null and !''.equals(setup)">
AND UPPER(SETUP) LIKE UPPER('%${setup}%')
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
</select>
<!-- 생산관리 -> 공정실적관리 -->
<select id="processperformanceGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
<!-- ROW_NUMBER() OVER(ORDER BY REGDATE DESC) AS NUM, -->
OBJID,
CUSTOMER_OBJID,
(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID) AS CUSTOMER_NAME,
T.CONTRACT_OBJID,
(SELECT CUSTOMER_PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME,
(SELECT PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NAME,
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO,
(SELECT MECHANICAL_TYPE FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS MECHANICAL_TYPE,
(SELECT DUE_DATE FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS DUE_DATE,
(SELECT SETUP FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS SETUP,
(SELECT USER_NAME(PM_USER_ID) FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PM_USER_NAME,
(SELECT CODE_NAME(PRODUCT) FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PRODUCT_NAME,
T.UNIT_CODE,
(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
STATUS,
CASE UPPER(STATUS)
WHEN 'CREATE' THEN '등록중'
WHEN 'CHANGEDESIGN' THEN '설계변경미배포'
WHEN 'DEPLOY' THEN '배포완료'
ELSE ''
END STATUS_TITLE,
WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) || '/' || (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) as DEPT_USER_NAME,
REGDATE AS REGDATE,
TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REG_DATE,
DEPLOY_DATE,
REVISION,
(SELECT MAX(PM.EO_NO) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_NO,
(SELECT MAX(PM.EO_DATE) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_DATE,
NOTE,
(SELECT COUNT(*) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON COALESCE(NULLIF(BP.LAST_PART_OBJID, ''), BP.PART_NO) = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID = T.OBJID AND PM.part_type is not null AND PM.part_type != '' AND BP.STATUS in ('beforeEdit', 'editing', 'deleting', 'deploy')) AS BOM_CNT,
(SELECT count(1) FROM ASSEMBLY_WBS_TASK AS A
INNER JOIN BOM_PART_QTY AS BP
ON A.PARENT_OBJID = BP.BOM_REPORT_OBJID
AND A.PART_OBJID = COALESCE(NULLIF(BP.LAST_PART_OBJID, ''), BP.PART_NO)
AND A.BOM_QTY_CHILD_OBJID = BP.CHILD_OBJID
AND BP.STATUS in ('beforeEdit', 'editing', 'deleting', 'deploy')
WHERE A.PARENT_OBJID = T.OBJID AND assembly_user_id IS NOT NULL AND assembly_user_id !='' AND assembly_date IS NOT NULL AND assembly_date!='' ) as ASSING_CNT,
CASE WHEN (SELECT COUNT(*) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON COALESCE(NULLIF(BP.LAST_PART_OBJID, ''), BP.PART_NO) = PM.OBJID::VARCHAR where BP.BOM_REPORT_OBJID = T.OBJID and PM.part_type is not null and PM.part_type != '' AND BP.STATUS in ('beforeEdit', 'editing', 'deleting', 'deploy')) = 0 THEN 0
ELSE ROUND((((SELECT count(1) FROM ASSEMBLY_WBS_TASK AS A
INNER JOIN BOM_PART_QTY AS BP
ON A.PARENT_OBJID = BP.BOM_REPORT_OBJID
AND A.PART_OBJID = COALESCE(NULLIF(BP.LAST_PART_OBJID, ''), BP.PART_NO)
AND A.BOM_QTY_CHILD_OBJID = BP.CHILD_OBJID
AND BP.STATUS in ('beforeEdit', 'editing', 'deleting', 'deploy')
WHERE A.PARENT_OBJID = T.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 COALESCE(NULLIF(BP.LAST_PART_OBJID, ''), BP.PART_NO) = PM.OBJID::VARCHAR where BP.BOM_REPORT_OBJID = T.OBJID and PM.part_type is not null and PM.part_type != '' AND BP.STATUS in ('beforeEdit', 'editing', 'deleting', 'deploy'))) * 100), 1)
END AS AS_RATE ,
coalesce(P.WORK_HOUR , '0') as INSOURCING_SUM,
coalesce(O.WORK_HOUR , '0') as OUTSOURCING_SUM,
coalesce(P.WORK_HOUR , '0')::numeric + coalesce(O.WORK_HOUR , '0')::numeric as TOTAL_SUM
<!-- (SELECT COUNT(*) FROM BOM_PART_QTY AS A WHERE A.BOM_REPORT_OBJID = T.OBJID) AS BOM_CNT -->
<!-- ,(SELECT SUM(CASE WHEN INSOURCING='' AND INSOURCING IS NOT NULL THEN '0' ELSE INSOURCING END ::INTEGER) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID) +
(SELECT SUM(CASE WHEN OUTSOURCING='' AND OUTSOURCING IS NOT NULL THEN '0' ELSE OUTSOURCING END ::integer) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID) AS TOTAL_SUM
,(SELECT SUM(CASE WHEN INSOURCING='' AND INSOURCING IS NOT NULL THEN '0' ELSE INSOURCING END ::INTEGER) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID) AS INSOURCING_SUM
,(SELECT SUM(CASE WHEN OUTSOURCING='' AND OUTSOURCING IS NOT NULL THEN '0' ELSE OUTSOURCING END ::integer) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID) AS OUTSOURCING_SUM -->
<!-- ,(SELECT SUM(CASE WHEN receive_qty='' AND receive_qty IS NOT NULL THEN '0' ELSE receive_qty END ::INTEGER) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID) AS ASS_CNT -->
<!-- ,(SELECT SUM(CASE WHEN receive_qty='' AND receive_qty IS NOT NULL THEN '0' ELSE receive_qty END ::INTEGER) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID
AND assembly_user_id IS NOT NULL AND assembly_user_id !='' AND assembly_date IS NOT NULL AND assembly_date!='' AND (insourcing IS NOT NULL OR insourcing!='')
AND (outsourcing IS NOT NULL OR outsourcing!='')
) AS ASSING_CNT
,CASE WHEN (SELECT SUM(CASE WHEN receive_qty='' AND receive_qty IS NOT NULL THEN '0' ELSE receive_qty END ::INTEGER) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID) = 0
THEN 0
ELSE
ROUND(((SELECT SUM(CASE WHEN receive_qty='' AND receive_qty IS NOT NULL THEN '0' ELSE receive_qty END ::INTEGER) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID
AND assembly_user_id IS NOT NULL AND assembly_user_id !='' AND assembly_date IS NOT NULL AND assembly_date!='' AND (insourcing IS NOT NULL OR insourcing!='')
AND (outsourcing IS NOT NULL OR outsourcing!='')
)::numeric / (SELECT SUM(CASE WHEN receive_qty='' AND receive_qty IS NOT NULL THEN '0' ELSE receive_qty END ::INTEGER) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID) * 100),1)
END AS AS_RATE -->
FROM
PART_BOM_REPORT AS T
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT005','DPT023','DPT013')
AND PRODUCTION_TYPE = 'assemble'
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS P
ON P.UNIT_CODE = T.UNIT_CODE
AND P.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID ,
UNIT_CODE ,
SUM(WORK_HOUR::numeric) as WORK_HOUR
FROM
WORK_DIARY WD
WHERE
WD.CONTRACT_OBJID != ''
AND WD.CONTRACT_OBJID IS NOT NULL
AND STATUS = 'complete'
AND PRODUCTION_TYPE = 'assemble'
AND SOURCING_TYPE = 'outsourcing'
GROUP BY CONTRACT_OBJID, UNIT_CODE ) AS O
ON O.UNIT_CODE = T.UNIT_CODE
AND O.CONTRACT_OBJID = T.CONTRACT_OBJID
WHERE 1=1
AND T.STATUS = 'deploy'
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND T.CONTRACT_OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND T.CONTRACT_OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="unit_code !=null and unit_code != '' ">
AND T.UNIT_CODE = #{unit_code}
</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 (SELECT PRODUCT FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) = #{product}
</if>
<if test="pm_user_id !=null and pm_user_id !=''">
AND (SELECT PM_USER_ID FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) = #{pm_user_id}
</if>
ORDER BY REGDATE DESC
</select>
<!-- //이슈 목록 조회 -->
<select id="getIssueList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT *
FROM (
SELECT PMS_ISSUE_INFO.*,ROW_NUMBER() OVER (ORDER BY REGDATE DESC) AS RNUM
FROM(
SELECT PMS_ISSUE_INFO.*
FROM(
SELECT A.OBJID
, A.REGION
, 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.PROD_GROUP_OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = A.PROD_GROUP_OBJID) AS PROD_GROUP_NAME
, A.PROD_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = A.PROD_OBJID) AS PROD_NAME
, A.SUBJECT
, A.ISSUE_CONTENTS
, A.ISSUE_RESULT_CONTENTS
, A.PIC_DEPT
, TO_CHAR(A.COMPLETE_PLAN_DATE, 'YYYY-MM-DD') AS COMPLETE_PLAN_DATE
, TO_CHAR(A.COMPLETE_DATE, 'YYYY-MM-DD') AS COMPLETE_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.REGDATE AS REGDATE_ORG
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS REGDATE
, DECODE(COMPLETE_DATE, NULL, '진행중', '완료') AS STATUS
, (SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = A.OBJID AND DOC_TYPE='ISSUE_ATTACH' AND UPPER(STATUS) = 'ACTIVE') AS ISSUE_FILE_CNT
FROM PMS_ISSUE_INFO A
WHERE 1=1
<if test="search_region != null and search_region !='' ">
AND A.REGION = #{search_region}
</if>
<if test="search_carType != null and search_carType != '' ">
AND A.CAR_OBJID = #{search_carType}
</if>
<if test="search_productType != null and search_productType !=''">
AND A.PROD_OBJID = #{search_productType}
</if>
) PMS_ISSUE_INFO
WHERE 1=1
<if test="search_oem !=null and search_oem !=''">
AND OEM_OBJID = #{search_oem}
</if>
<if test="search_productGroup != null and search_productGroup !=''">
AND PROD_GROUP_OBJID = #{search_productGroup}
</if>
<if test="search_fromDate != null and search_fromDate != ''">
AND TO_DATE(REGDATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'YYYY-MM-DD')
</if>
<if test="search_toDate != null and search_toDate != ''">
AND TO_DATE(REGDATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'YYYY-MM-DD')
</if>
<if test="search_status !=null and search_status !=''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
<if test="search_writer != null and !''.equals(search_writer)">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_dept != null and !''.equals(search_dept)">
AND UPPER(WRITER_DEPT_NAME) LIKE UPPER('%${search_dept}%')
</if>
<if test="search_pic_dept != null and !''.equals(search_pic_dept)">
AND UPPER(PIC_DEPT) LIKE UPPER('%${search_pic_dept}%')
</if>
)PMS_ISSUE_INFO
WHERE 1=1
)WHERE 1=1
<if test="PAGE_END != null and PAGE_END !=''">
<![CDATA[ AND RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!=''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</select>
<select id="selectPlanningIssueList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
OBJID,
ISSUE_NO,
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.PROJECT_OBJID) AS PROJECT_NO,
PROJECT_OBJID,
UNIT_CODE,
(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM pms_wbs_task AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_CODE_NAME,
PART_OBJID,
(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID = T.PART_OBJID) AS PART_NO,
(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID = T.PART_OBJID) AS PART_NAME,
ISSUE_CATEGORY,
CODE_NAME(ISSUE_CATEGORY) AS ISSUE_CATEGORY_NAME,
ISSUE_TYPE,
CODE_NAME(ISSUE_TYPE) AS ISSUE_TYPE_NAME,
CONTENT,
DESIGN_USERID,
USER_NAME(DESIGN_USERID) AS DESIGN_USERID_NAME,
CODE_NAME(DESIGN_RESULT) AS DESIGN_RESULT_NAME,
DESIGN_RESULT,
DESIGN_DATE,
PURCHASE_USERID,
USER_NAME(PURCHASE_USERID) AS PURCHASE_USERID_NAME,
PURCHASE_RESULT,
CODE_NAME(PURCHASE_RESULT) AS PURCHASE_RESULT_NAME,
PURCHASE_DATE,
QUALITY_USERID,
USER_NAME(QUALITY_USERID) AS QUALITY_USERID_NAME,
CODE_NAME(QUALITY_RESULT) AS QUALITY_RESULT_NAME,
QUALITY_RESULT,
QUALITY_DATE,
PRODUCTION_USERID,
USER_NAME(PRODUCTION_USERID) AS PRODUCTION_USERID_NAME,
CODE_NAME(PRODUCTION_RESULT) AS PRODUCTION_RESULT_NAME,
PRODUCTION_RESULT,
PRODUCTION_DATE,
REG_DATE,
WRITER,
USER_NAME(WRITER) AS WRITER_NAME,
TO_CHAR(REG_DATE,'YYYY-MM-DD') AS REG_DATE_TEXT,
CASE WHEN STATUS ='write' THEN '등록'
WHEN STATUS = 'release' AND
(
((DESIGN_USERID IS NOT NULL AND DESIGN_USERID != '') AND DESIGN_DATE != '') OR
((DESIGN_USERID IS NULL OR DESIGN_USERID = '') AND DESIGN_DATE = '')
) AND
(
((PURCHASE_USERID IS NOT NULL AND PURCHASE_USERID != '') AND PURCHASE_DATE != '') OR
((PURCHASE_USERID IS NULL OR PURCHASE_USERID = '') AND PURCHASE_DATE = '')
) AND
(
((QUALITY_USERID IS NOT NULL AND QUALITY_USERID != '') AND QUALITY_DATE != '') OR
((QUALITY_USERID IS NULL OR QUALITY_USERID = '') AND QUALITY_DATE = '')
) AND
(
((PRODUCTION_USERID IS NOT NULL AND PRODUCTION_USERID != '') AND PRODUCTION_DATE != '') OR
((PRODUCTION_USERID IS NULL OR PRODUCTION_USERID = '') AND PRODUCTION_DATE = '')
) AND
(
(DESIGN_USERID IS NOT NULL AND DESIGN_USERID != '') OR
(PURCHASE_USERID IS NOT NULL AND PURCHASE_USERID != '') OR
(QUALITY_USERID IS NOT NULL AND QUALITY_USERID != '') OR
(PRODUCTION_USERID IS NOT NULL AND PRODUCTION_USERID != '')
)
THEN '조치완료'
WHEN STATUS = 'release' AND
(
(DESIGN_USERID IS NOT NULL AND DESIGN_USERID != '') OR
(PURCHASE_USERID IS NOT NULL AND PURCHASE_USERID != '') OR
(QUALITY_USERID IS NOT NULL AND QUALITY_USERID != '') OR
(PRODUCTION_USERID IS NOT NULL AND PRODUCTION_USERID != '') OR
DESIGN_DATE != '' OR PURCHASE_DATE != '' OR
QUALITY_DATE != '' OR PRODUCTION_DATE != ''
)
THEN '조치중'
<!-- WHEN STATUS = 'release' AND DESIGN_RESULT != '' AND DESIGN_DATE != '' AND
PURCHASE_RESULT != '' AND PURCHASE_DATE != '' AND
QUALITY_RESULT != '' AND QUALITY_DATE != '' AND
PRODUCTION_RESULT != '' AND PRODUCTION_DATE != '' AND
(DESIGN_USERID IS NOT NULL OR PURCHASE_USERID IS NOT NULL OR
QUALITY_USERID IS NOT NULL OR PRODUCTION_USERID IS NOT NULL) THEN '조치완료' -->
<!-- WHEN STATUS ='release' AND DESIGN_RESULT !='' AND DESIGN_DATE !=''
THEN '조치완료' -->
ELSE
CASE WHEN STATUS ='release' AND to_date(TO_CHAR(REG_DATE,'yyyy-mm-dd'),'yyyy-mm-dd') <![CDATA[ > ]]> to_date(TO_CHAR(REG_DATE,'yyyy-mm-dd'),'yyyy-mm-dd')+5 AND DESIGN_DATE =''
THEN '미조치'
ELSE '배포' END
END AS STATUS_NAME,
STATUS
FROM PLANNING_ISSUE AS T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REG_DATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND PROJECT_OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND PROJECT_OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="unit_code !=null and unit_code != '' ">
AND UNIT_CODE = #{unit_code}
</if>
<if test="issue_category !=null and issue_category != '' ">
AND ISSUE_CATEGORY = #{issue_category}
</if>
<if test="issue_type !=null and issue_type != '' ">
AND ISSUE_TYPE = #{issue_type}
</if>
<if test="writer !=null and writer != '' ">
AND WRITER = #{writer}
</if>
<if test="design_userid !=null and design_userid != '' ">
AND DESIGN_USERID = #{design_userid}
</if>
<if test="design_result !=null and design_result != '' ">
AND DESIGN_RESULT = #{design_result}
</if>
<if test="search_status !=null and search_status != '' ">
<if test="search_status == 'write'">
AND STATUS = 'write'
</if>
<!-- Check if search_status is 'complete' -->
<if test="search_status == 'complete'">
AND STATUS = 'release'
AND DESIGN_RESULT != ''
AND DESIGN_DATE != ''
AND DESIGN_USERID !=''
</if>
<!-- Check if search_status is 'late' -->
<if test="search_status == 'late'">
AND STATUS = 'release'
AND TO_DATE(TO_CHAR(REG_DATE, 'yyyy-mm-dd'), 'yyyy-mm-dd') <![CDATA[ > ]]>
TO_DATE(TO_CHAR(REG_DATE, 'yyyy-mm-dd'), 'yyyy-mm-dd') + 5
AND DESIGN_DATE = ''
</if>
<!-- Check if search_status is 'release' -->
<if test="search_status == 'release'">
AND STATUS = 'release'
AND (DESIGN_DATE = '' OR DESIGN_USERID = '' OR DESIGN_RESULT ='')
</if>
</if>
<if test="status !=null and status != '' ">
<if test="status == 'all'">
AND STATUS != 'write'
</if>
<if test="status == 'complete'">
AND STATUS = 'release'
AND DESIGN_RESULT != ''
AND DESIGN_DATE != ''
AND DESIGN_USERID !=''
</if>
<if test="status == 'late'">
AND STATUS = 'release'
AND (DESIGN_DATE = '' OR DESIGN_USERID = '' OR DESIGN_RESULT ='')
</if>
</if>
ORDER BY ISSUE_NO DESC
</select>
<select id="selectPlanningIssueInfo" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
OBJID,
ISSUE_NO,
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.PROJECT_OBJID) AS PROJECT_NO,
PROJECT_OBJID,
UNIT_CODE,
(SELECT TASK_NAME FROM pms_wbs_task_standard AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_CODE_NAME,
PART_OBJID,
(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID = T.PART_OBJID) AS PART_NO,
(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID = T.PART_OBJID) AS PART_NAME,
ISSUE_CATEGORY,
CODE_NAME(ISSUE_CATEGORY) AS ISSUE_CATEGORY_NAME,
ISSUE_TYPE,
CODE_NAME(ISSUE_TYPE) AS ISSUE_TYPE_NAME,
CONTENT,
DESIGN_USERID,
USER_NAME(DESIGN_USERID) AS DESIGN_USERID_NAME,
CODE_NAME(DESIGN_RESULT) AS DESIGN_RESULT_NAME,
DESIGN_RESULT,
DESIGN_DATE,
PURCHASE_USERID,
USER_NAME(PURCHASE_USERID) AS PURCHASE_USERID_NAME,
PURCHASE_RESULT,
CODE_NAME(PURCHASE_RESULT) AS PURCHASE_RESULT_NAME,
PURCHASE_DATE,
QUALITY_USERID,
USER_NAME(QUALITY_USERID) AS QUALITY_USERID_NAME,
CODE_NAME(QUALITY_RESULT) AS QUALITY_RESULT_NAME,
QUALITY_RESULT,
QUALITY_DATE,
PRODUCTION_USERID,
USER_NAME(PRODUCTION_USERID) AS PRODUCTION_USERID_NAME,
CODE_NAME(PRODUCTION_RESULT) AS PRODUCTION_RESULT_NAME,
PRODUCTION_RESULT,
PRODUCTION_DATE,
REG_DATE,
WRITER,
USER_NAME(WRITER) AS WRITER_NAME,
TO_CHAR(REG_DATE,'YYYY-MM-DD') AS REG_DATE_TEXT,
STATUS
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = T.OBJID AND DOC_TYPE='ISSUE01' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT1
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = T.OBJID AND DOC_TYPE='ISSUE02' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT2
,(SELECT SUM(FILE_SIZE) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = T.OBJID AND DOC_TYPE='ISSUE01' AND UPPER(STATUS) = 'ACTIVE') AS FILE_SIZE1
,(SELECT SUM(FILE_SIZE) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = T.OBJID AND DOC_TYPE='ISSUE02' AND UPPER(STATUS) = 'ACTIVE') AS FILE_SIZE2
FROM PLANNING_ISSUE AS T
WHERE T.OBJID = #{objId}
</select>
<select id="selectAssemblyDate" parameterType="map" resultType="com.pms.common.UpperKeyMap">
<!-- 2024.04.18 조립공정율 추가 -->
SELECT
OBJID,
T.CONTRACT_OBJID,
(SELECT PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NAME,
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO,
(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 = T.OBJID AND PM.part_type is not null AND PM.part_type != '') AS BOM_CNT,
(SELECT count(1) FROM ASSEMBLY_WBS_TASK AS A WHERE A.PARENT_OBJID = T.OBJID AND assembly_user_id IS NOT NULL AND assembly_user_id !='' AND assembly_date IS NOT NULL AND assembly_date!='' ) as ASSING_CNT,
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 = T.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 = T.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 = T.OBJID and PM.part_type is not null and PM.part_type != '')) * 100), 0)::varchar
END AS AS_RATE ,
AWT.PARENT_OBJID,
AWT.PRODUCE_ACT_START,
AWT.PRODUCE_ACT_END
FROM
PART_BOM_REPORT AS T
LEFT OUTER JOIN (
SELECT
PARENT_OBJID
,MIN(NVL(ASSEMBLY_DATE,'9999')) as PRODUCE_ACT_START
,MAX(ASSEMBLY_DATE) as PRODUCE_ACT_END
FROM
ASSEMBLY_WBS_TASK
GROUP BY PARENT_OBJID
) AWT on AWT.PARENT_OBJID = T.OBJID
WHERE 1=1
AND PARENT_OBJID = #{PARENT_OBJID}
ORDER BY REGDATE DESC
<!--
SELECT
PARENT_OBJID
,MIN(NVL(ASSEMBLY_DATE,'9999')) as PRODUCE_ACT_START
,MAX(ASSEMBLY_DATE) as PRODUCE_ACT_END
FROM
ASSEMBLY_WBS_TASK
WHERE PARENT_OBJID = #{PARENT_OBJID}
GROUP BY PARENT_OBJID -->
</select>
<!-- //이슈 등록 및 수정 -->
<update id="mergeissueInfo" parameterType="map">
INSERT INTO PLANNING_ISSUE
(
OBJID
,ISSUE_NO
,PROJECT_OBJID
,UNIT_CODE
,PART_OBJID
,ISSUE_CATEGORY
,ISSUE_TYPE
,CONTENT
,DESIGN_USERID
,DESIGN_RESULT
,DESIGN_DATE
,PURCHASE_USERID
,PURCHASE_RESULT
,PURCHASE_DATE
,QUALITY_USERID
,QUALITY_RESULT
,QUALITY_DATE
,PRODUCTION_USERID
,PRODUCTION_RESULT
,PRODUCTION_DATE
,REG_DATE
,WRITER
,STATUS
)
VALUES
(
#{objId}
,(SELECT 'ISSUE' || to_char(now(),'YY')||'-'||LPAD((SELECT CASE WHEN MAX(SUBSTR(ISSUE_NO,9,3)) IS NULL THEN 1 ELSE MAX(SUBSTR(ISSUE_NO,9,3))::INTEGER+1 END FROM PLANNING_ISSUE)::VARCHAR,3,'0'))
,#{project_objid}
,#{unit_code}
,#{part_objid}
,#{issue_category}
,#{issue_type}
,#{content}
,#{design_userid}
,#{design_result}
,#{design_date}
,#{purchase_userid}
,#{purchase_result}
,#{purchase_date}
,#{quality_userid}
,#{quality_result}
,#{quality_date}
,#{production_userid}
,#{production_result}
,#{production_date}
,now()
,#{writer}
,'write'
)
ON CONFLICT (OBJID) DO
UPDATE
SET
PROJECT_OBJID=#{project_objid}
,UNIT_CODE=#{unit_code}
,PART_OBJID=#{part_objid}
,ISSUE_CATEGORY=#{issue_category}
,ISSUE_TYPE=#{issue_type}
,CONTENT=#{content}
,DESIGN_USERID=#{design_userid}
,DESIGN_RESULT=#{design_result}
,DESIGN_DATE=#{design_date}
,PURCHASE_USERID=#{purchase_userid}
,PURCHASE_RESULT=#{purchase_result}
,PURCHASE_DATE=#{purchase_date}
,QUALITY_USERID=#{quality_userid}
,QUALITY_RESULT=#{quality_result}
,QUALITY_DATE=#{quality_date}
,PRODUCTION_USERID=#{production_userid}
,PRODUCTION_RESULT=#{production_result}
,PRODUCTION_DATE=#{production_date}
</update>
<!-- 이슈 삭제 -->
<delete id="planningDelete" parameterType="map">
DELETE FROM PLANNING_ISSUE WHERE OBJID = #{OBJID}
</delete>
<update id="planningrelease" parameterType="map">
UPDATE PLANNING_ISSUE SET
STATUS='release'
WHERE OBJID = #{OBJID}
</update>
<!-- 생산관리 -> 출고관리-->
<select id="releaseMgmtGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
CM.*
,RM.OBJID AS RELEASE_OBJID
,RM.PARENT_OBJID
,RM.RELEASE_CAR_NO
,RM.RELEASE_DATE
,RM.TASK_OVER_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = RM.TASK_OVER_USER_ID) AS TASK_OVER_USER_NAME
,RM.TASK_OVER_DATE
,RM.TASK_OVER_COMMENT
,RM.REGDATE AS RELEASE_REGDATE
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = RM.WRITER) AS RELEASE_WRITER
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = RM.OBJID AND DOC_TYPE='RELEASE_CHECK' AND UPPER(STATUS) = 'ACTIVE') AS RELEASE_CHECK_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = RM.OBJID AND DOC_TYPE='RELEASE_ORDER' AND UPPER(STATUS) = 'ACTIVE') AS RELEASE_ORDER_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = RM.OBJID AND DOC_TYPE='RELEASE_TAKING_OVER' AND UPPER(STATUS) = 'ACTIVE') AS RELEASE_TAKING_OVER_CNT
,CASE
WHEN (COALESCE(TRIM(RM.RELEASE_DATE),'') !='') THEN '출고완료'
WHEN TO_CHAR(NOW(),'YYYYMMDD') <![CDATA[ <= ]]> TO_CHAR(TO_DATE(CM.CONTRACT_COST_RESULT_DATE,'YYYY-MM-DD'),'YYYYMMDD') THEN '취소'
WHEN (COALESCE(TRIM(CM.CONTRACT_COST_RESULT_DATE),'') !='') THEN '수주'
WHEN TO_CHAR(NOW(),'YYYYMMDD') >= TO_CHAR(TO_DATE(CM.DUE_DATE,'YYYY-MM-DD'),'YYYYMMDD') THEN '지연'
ELSE '계약'
END RELEASE_STATUS_TITLE
,RM.INSTALL_COMPLETE_DATE
,RM.INSTALL_RESULT
,(SELECT COUNT(1) FROM INSPECTION_MGMT AS O WHERE O.PARENT_OBJID = CM.OBJID) AS INSPECTION_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = CM.OBJID AND DOC_TYPE='ADMISSION_INSPECTION_FILE' AND UPPER(STATUS) = 'ACTIVE') AS ADMISSION_INSPECTION_CNT
FROM
<include refid="fundMgmt.fundMgmtBase"/> CM
LEFT OUTER JOIN
RELEASE_MGMT RM
ON CM.OBJID::VARCHAR = RM.PARENT_OBJID
<!-- AND CM.PRODUCT_GROUP = RM.PRODUCT_GROUP -->
AND CM.PRODUCT = RM.PRODUCT
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(CM.REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND CM.OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND CM.OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="category_cd !=null and category_cd != '' ">
AND CM.category_cd = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CM.CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND CM.PRODUCT = #{product}
<!-- AND (SELECT PRODUCT FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) = #{product} -->
</if>
<if test="pm_user_id !=null and pm_user_id !=''">
AND CM.PM_USER_ID = #{pm_user_id}
<!-- AND (SELECT PM_USER_ID FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) = #{pm_user_id} -->
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
</select>
<select id="selectSetupMgmtList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
T.*
,CASE WHEN TASK_CNT = '0' THEN '0'
ELSE ((COMPLETE_CNT::FLOAT / TASK_CNT) * 100)::integer
END SETUP_RATE
FROM
(SELECT
(SELECT COUNT(1) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '')) AS TASK_CNT
,(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 != '')) AS COMPLETE_CNT
,(SELECT SUM(COALESCE(EMPLOYEES_IN,'0')::integer) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PARENT_OBJID IS NOT NULL OR PARENT_OBJID != '')) AS EMPLOYEES_IN
,(SELECT SUM(COALESCE(EMPLOYEES_OUT,'0')::integer) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID AND (PARENT_OBJID IS NOT NULL OR PARENT_OBJID != '')) AS EMPLOYEES_OUT
,(SELECT SUM(COALESCE(EMPLOYEES_OUT,'0')::integer+COALESCE(EMPLOYEES_IN,'0')::integer) FROM SETUP_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID) AS EMPLOYEES_TOTAL
,OBJID
,CATEGORY_CD
,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME
,CUSTOMER_OBJID
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME
,PRODUCT
,CODE_NAME(PRODUCT) AS PRODUCT_NAME
,(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
,STATUS_CD
,CODE_NAME(STATUS_CD) AS STATUS_NAME
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,CODE_NAME(FACILITY) AS FACILITY_NAME
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CODE_NAME(BUS_CAL_CD) AS BUS_CAL_NAME
,CATEGORY1_CD
,CODE_NAME(CATEGORY1_CD) AS CATEGORY1_NAME
,CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CHG_USER_ID ) AS CHG_USER_NAME
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,CODE_NAME(RESULT_CD) AS RESULT_NAME
,PROJECT_NO
,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
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,CODE_NAME(CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,REGDATE
,TO_CHAR(REGDATE,'YYYY-MM-DD') AS REG_DATE
,WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CODE_NAME(CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CODE_NAME(MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,CONTRACT_RESULT
,CODE_NAME(CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,CODE_NAME(AREA_CD) AS AREA_NAME
,PROJECT_NAME
,MECHANICAL_TYPE
FROM
PROJECT_MGMT AS T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product !=null and product != '' ">
AND PRODUCT = #{product}
</if>
<if test="pm_user_id !=null and pm_user_id != '' ">
AND PM_USER_ID = #{pm_user_id}
</if>
<if test="unit_code !=null and unit_code != '' ">
AND UNIT_CODE = #{unit_code}
</if>
<if test="writer !=null and writer != '' ">
AND WRITER = #{writer}
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC ) AS T
</select>
<!-- //정전개 조회 쿼리 -->
<select id="selectStructureAscendingList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
WITH RECURSIVE VIEW_BOM(
BOM_REPORT_OBJID,
PARENT_OBJID,
CHILD_OBJID,
PARENT_PART_NO,
PART_NO,
REGDATE,
QTY,
QTY_TEMP,
PART_OBJID,
<!--
DESIGN_DATE,
EO_NO,
EO_DATE,
PART_NO_TITLE,
PART_NAME,
REV,
MATERIAL,
SUB_MATERIAL,
SPEC,
WEIGHT,
PART_OBJID,
THICKNESS,
WIDTH,
HEIGHT,
OUT_DIAMETER,
IN_DIAMETER,
LENGTH,
MAKER,
POST_PROCESSING,
PART_MNG_NO,
PARENT_PART_MNG_NO,
-->
LEV,
PATH,
PATH2,
CYCLE,
SEQ,
LAST_PART_OBJID
) AS (
SELECT
A.BOM_REPORT_OBJID,
A.PARENT_OBJID,
A.CHILD_OBJID,
A.PARENT_PART_NO,
A.PART_NO,
A.REGDATE,
A.QTY,
A.QTY_TEMP,
NVL(A.LAST_PART_OBJID, A.PART_NO) PART_OBJID,
<!--
B.DESIGN_DATE,
B.EO_NO,
B.EO_DATE,
B.PART_NO AS PART_NO_TITLE,
B.PART_NAME,
B.REVISION AS REV,
B.MATERIAL,
B.SUB_MATERIAL,
B.SPEC,
B.WEIGHT,
B.OBJID AS PART_OBJID,
B.THICKNESS,
B.WIDTH,
B.HEIGHT,
B.OUT_DIAMETER,
B.IN_DIAMETER,
B.LENGTH,
B.MAKER,
B.POST_PROCESSING,
A.PART_MNG_NO,
A.PARENT_PART_MNG_NO,
-->
1,
ARRAY [A.CHILD_OBJID::TEXT],
ARRAY [A.SEQ::TEXT],
FALSE,
A.SEQ,
A.LAST_PART_OBJID
FROM
BOM_PART_QTY A
WHERE 1=1
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
AND A.BOM_REPORT_OBJID=#{OBJID}
AND A.STATUS in ('beforeEdit', 'editing', 'deleting', 'deploy')
<!--
(
SELECT
BPQ.*
,(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO
,(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
FROM BOM_PART_QTY BPQ
WHERE (PARENT_PART_NO IS NULL OR PARENT_PART_NO = '')
AND BPQ.BOM_REPORT_OBJID=#{OBJID}
AND STATUS in ('beforeEdit', 'editing', 'deleting', 'deploy')
<if test="customer_cd != null and !''.equals(customer_cd)">
AND EXISTS (SELECT 1 FROM PART_BOM_REPORT R
WHERE R.CUSTOMER_OBJID = #{customer_cd}
AND R.OBJID = BPQ.BOM_REPORT_OBJID)
</if>
<if test="project_name != null and !''.equals(project_name)">
AND EXISTS (SELECT 1 FROM PART_BOM_REPORT R
WHERE R.CONTRACT_OBJID = #{project_name}
AND R.OBJID = BPQ.BOM_REPORT_OBJID)
</if>
<if test="unit_code != null and !''.equals(unit_code)">
AND EXISTS (SELECT 1 FROM PART_BOM_REPORT R
WHERE R.UNIT_CODE = #{unit_code}
AND R.OBJID = BPQ.BOM_REPORT_OBJID)
</if>
) A
,PART_MNG B,
PART_BOM_REPORT C
WHERE 1=1
AND A.BOM_REPORT_OBJID=#{OBJID}
-->
<!--
AND C.OBJID = A.BOM_REPORT_OBJID
AND NVL(A.LAST_PART_OBJID, A.PART_NO) = B.OBJID
AND A.LAST_PART_OBJID = B.OBJID
AND B.IS_LAST='1'
AND C.OBJID=#{OBJID}
-->
<!-- <if test="customer_cd != null and !''.equals(customer_cd)">
AND C.CUSTOMER_OBJID = #{customer_cd}
</if>
<if test="project_name != null and !''.equals(project_name)">
AND C.CONTRACT_OBJID = #{project_name}
</if>
<if test="unit_code != null and !''.equals(unit_code)">
AND C.UNIT_CODE = #{unit_code}
</if> -->
UNION ALL
SELECT
A.BOM_REPORT_OBJID,
A.PARENT_OBJID,
A.CHILD_OBJID,
A.PARENT_PART_NO,
A.PART_NO,
A.REGDATE,
A.QTY,
A.QTY_TEMP,
NVL(A.LAST_PART_OBJID, A.PART_NO) PART_OBJID,
<!--
B.DESIGN_DATE,
B.EO_NO,
B.EO_DATE,
B.PART_NO AS PART_NO_TITLE,
B.PART_NAME,
B.REVISION AS REV,
B.MATERIAL,
B.SUB_MATERIAL,
B.SPEC,
B.WEIGHT,
B.OBJID AS PART_OBJID,
B.THICKNESS,
B.WIDTH,
B.HEIGHT,
B.OUT_DIAMETER,
B.IN_DIAMETER,
B.LENGTH,
B.MAKER,
B.POST_PROCESSING,
A.PART_MNG_NO,
A.PARENT_PART_MNG_NO,
-->
LEV + 1,
PATH||A.CHILD_OBJID::TEXT,
PATH2||A.SEQ::TEXT,
A.PARENT_OBJID = ANY(PATH),
A.SEQ,
A.LAST_PART_OBJID
FROM
BOM_PART_QTY A
<!--
(
SELECT
BPQ.*,
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PART_NO) AS PART_MNG_NO,
(SELECT PART_NO FROM PART_MNG P WHERE 1=1 AND P.OBJID::VARCHAR = BPQ.PARENT_PART_NO) AS PARENT_PART_MNG_NO
FROM BOM_PART_QTY BPQ
WHERE 1=1
) A,
PART_MNG B,
PART_BOM_REPORT C,
-->
,VIEW_BOM V
WHERE 1=1
AND A.PARENT_OBJID = V.CHILD_OBJID
AND V.BOM_REPORT_OBJID = A.BOM_REPORT_OBJID
AND A.STATUS in ('beforeEdit', 'editing', 'deleting', 'deploy')
<!--
AND C.OBJID = A.BOM_REPORT_OBJID
AND NVL(A.LAST_PART_OBJID, A.PART_NO) = B.OBJID
AND A.PARENT_OBJID = D.CHILD_OBJID
-->
)
SELECT
V.BOM_REPORT_OBJID,
V.PARENT_PART_NO,
V.CHILD_OBJID,
V.REGDATE,
V.QTY,
V.QTY_TEMP,
V.PART_OBJID,
CASE WHEN AS_WBS.PART_OBJID IS NULL
THEN V.PART_OBJID
ELSE AS_WBS.PART_OBJID END AS PART_OBJID,
V.LEV,
V.LEV AS LEVEL,
V.SEQ,
<!--
V.PART_MNG_NO,
V.PARENT_PART_MNG_NO,
-->
B.DESIGN_DATE,
B.EO_NO,
B.EO_DATE,
(SELECT O.PART_NO FROM PART_MNG AS O WHERE O.OBJID = V.CHILD_OBJID) AS PART_NO_TITLE,
B.PART_NAME,
B.MATERIAL,
B.SUB_MATERIAL,
B.WEIGHT,
B.REVISION,
B.PART_NO,
B.THICKNESS,
B.WIDTH,
B.HEIGHT,
B.OUT_DIAMETER,
B.IN_DIAMETER,
B.LENGTH,
B.SPEC,
B.REMARK,
B.MAKER,
B.POST_PROCESSING,
B.UNIT_TITLE,
B.PART_TYPE_TITLE,
B.CU01_CNT AS FILE_3D_CNT,
B.CU02_CNT AS FILE_2D_CNT,
B.CU03_CNT AS FILE_PDF_CNT,
(
SELECT
CASE
WHEN COUNT(*) > 0 THEN 0
ELSE 1
END LEAF
FROM VIEW_BOM VT
WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID
AND V.PART_OBJID = VT.PARENT_PART_NO
<!--
AND V.PART_MNG_NO = VT.PARENT_PART_MNG_NO
-->
) AS LEAF
,AS_WBS.OBJID AS ASS_OBJID
<!-- ,AS_WBS.RECEIVE_DATE
,AS_WBS.RECEIVE_QTY
,AS_WBS.RECEIVE_USER_ID
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = AS_WBS.RECEIVE_USER_ID) AS RECEIVE_USER_NAME -->
,AS_WBS.ASSEMBLY_USER_ID
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = AS_WBS.ASSEMBLY_USER_ID) AS ASSEMBLY_USER_NAME
<!-- ,AS_WBS.TRANSFER_USER_ID
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = AS_WBS.TRANSFER_USER_ID) AS TRANSFER_USER_NAME -->
,AS_WBS.ASSEMBLY_DATE
,AS_WBS.INSOURCING
,AS_WBS.OUTSOURCING
,RH.RECEIVE_QTY
<!-- ,DH.DELIVERY_QTY -->
,CASE WHEN PART_TYPE_TITLE = '구매품표준' THEN (DH.DELIVERY_QTY || ' / ' || POP.ORDER_QTY)
ELSE DH.DELIVERY_QTY::TEXT END
<!--
,(SELECT ARRAY_TO_STRING(ARRAY_AGG(ARRIVAL_PLAN_DATE),',') FROM ARRIVAL_PLAN A WHERE A.PART_OBJID = V.PART_OBJID AND ARRIVAL_PLAN_DATE > TO_CHAR((NOW() - INTERVAL '7 day'), 'YYYY-MM-DD') ) ARRIVAL_PLAN_DATES
-->
,(SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT RECEIPT_DATE), ',')
RECEIPT_DATE
FROM ARRIVAL_PLAN A
WHERE A.PART_OBJID = V.PART_OBJID
ORDER BY RECEIPT_DATE
LIMIT 3
) RECEIPT_DATES
,(
WITH
today_date AS (
SELECT ARRIVAL_PLAN_DATE
FROM ARRIVAL_PLAN A
WHERE A.PART_OBJID = V.PART_OBJID
AND ARRIVAL_PLAN_DATE = TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD')
LIMIT 1
),
future_dates AS (
SELECT ARRIVAL_PLAN_DATE
FROM ARRIVAL_PLAN A
WHERE A.PART_OBJID = V.PART_OBJID
AND ARRIVAL_PLAN_DATE > TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD')
ORDER BY ARRIVAL_PLAN_DATE
LIMIT 3
),
past_dates AS (
SELECT ARRIVAL_PLAN_DATE
FROM ARRIVAL_PLAN A
WHERE A.PART_OBJID = V.PART_OBJID
AND ARRIVAL_PLAN_DATE &lt; TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD')
ORDER BY ARRIVAL_PLAN_DATE DESC
LIMIT 3
),
combined_dates AS (
SELECT ARRIVAL_PLAN_DATE FROM today_date
UNION ALL
SELECT ARRIVAL_PLAN_DATE FROM future_dates
UNION ALL
SELECT ARRIVAL_PLAN_DATE FROM past_dates
)
SELECT (SELECT ARRAY_TO_STRING(ARRAY_AGG(ARRIVAL_PLAN_DATE), ',')
FROM (
SELECT ARRIVAL_PLAN_DATE
FROM combined_dates
ORDER BY ARRIVAL_PLAN_DATE
LIMIT 3
) T) AS ARRIVAL_PLAN_DATES
) ARRIVAL_PLAN_DATES
FROM
VIEW_BOM V
LEFT OUTER JOIN <include refid="partMng.partMngBaseSimple"/> B
ON NVL(V.LAST_PART_OBJID, V.PART_OBJID) = B.OBJID
LEFT OUTER JOIN ASSEMBLY_WBS_TASK AS AS_WBS
ON NVL(V.LAST_PART_OBJID, V.PART_OBJID) = AS_WBS.PART_OBJID
AND V.BOM_REPORT_OBJID = AS_WBS.PARENT_OBJID
AND V.CHILD_OBJID = AS_WBS.BOM_QTY_CHILD_OBJID
LEFT OUTER JOIN (
SELECT
SUM(POP.ORDER_QTY::NUMERIC) AS ORDER_QTY
,PART_OBJID
FROM
PURCHASE_ORDER_MASTER POM
,PURCHASE_ORDER_PART POP
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
AND POM.CONTRACT_MGMT_OBJID = #{project_name}
GROUP BY POP.PART_OBJID
)POP
ON POP.PART_OBJID = V.PART_OBJID
LEFT OUTER JOIN (
SELECT
O.CONTRACT_MGMT_OBJID
,O.UNIT
,O.PART_OBJID
,SUM(RECEIVE_QTY) AS RECEIVE_QTY
FROM
(SELECT
IMO.*,
IM.PART_OBJID ,
IM.CONTRACT_OBJID
FROM
(
SELECT
CONTRACT_MGMT_OBJID,
UNIT,
PARENT_OBJID,
SUM(case when OUT_QTY is null or OUT_QTY = '' then 0 else OUT_QTY::integer end) as RECEIVE_QTY
FROM
INVENTORY_MGMT_OUT IMO
WHERE
CONTRACT_MGMT_OBJID = #{project_name}
AND UNIT = #{unit_code}
GROUP BY
CONTRACT_MGMT_OBJID,
UNIT,
PARENT_OBJID ) IMO
LEFT OUTER JOIN INVENTORY_MGMT IM ON
IMO.PARENT_OBJID = IM.OBJID ) O
GROUP BY CONTRACT_MGMT_OBJID, UNIT, PART_OBJID
<!-- SELECT
PARENT_OBJID,
PART_OBJID,
SUM(CASE WHEN RECEIVE_QTY IS NULL OR RECEIVE_QTY = '' THEN 0 ELSE RECEIVE_QTY::integer END) AS RECEIVE_QTY
FROM
RECEIVE_HISTORY RH
WHERE
1=1
GROUP BY PARENT_OBJID, PART_OBJID -->
) AS RH
ON V.PART_OBJID = RH.PART_OBJID
<!-- AND RH.CONTRACT_OBJID = (SELECT CONTRACT_OBJID FROM PART_BOM_REPORT PBR WHERE V.BOM_REPORT_OBJID = PBR.OBJID) -->
AND RH.CONTRACT_MGMT_OBJID = (SELECT CONTRACT_OBJID FROM PART_BOM_REPORT PBR WHERE V.BOM_REPORT_OBJID = PBR.OBJID)
AND RH.UNIT = (SELECT UNIT_CODE FROM PART_BOM_REPORT PBR WHERE V.BOM_REPORT_OBJID = PBR.OBJID)
<!-- AND V.BOM_REPORT_OBJID = RH.PARENT_OBJID -->
LEFT OUTER JOIN (
SELECT
<!-- IMI.*, -->
IM.PART_OBJID
,SUM(DELIVERY_QTY) AS DELIVERY_QTY
,IM.CONTRACT_OBJID
<!-- ,IM.UNIT -->
FROM
(
SELECT
PARENT_OBJID,
SUM(CASE WHEN RECEIPT_QTY IS NULL OR RECEIPT_QTY = '' THEN 0 ELSE RECEIPT_QTY::INTEGER - coalesce(MOVE_QTY::INTEGER, 0) END) AS DELIVERY_QTY
FROM INVENTORY_MGMT_in IMI
WHERE CONTRACT_MGMT_OBJID = #{project_name}
GROUP BY PARENT_OBJID ) IMI
LEFT OUTER JOIN INVENTORY_MGMT IM
ON IMI.PARENT_OBJID = IM.OBJID
GROUP BY IM.PART_OBJID, CONTRACT_OBJID) AS DH
ON V.PART_OBJID = DH.PART_OBJID
AND DH.CONTRACT_OBJID = (SELECT CONTRACT_OBJID FROM PART_BOM_REPORT PBR WHERE V.BOM_REPORT_OBJID = PBR.OBJID)
<!-- AND DH.UNIT = (SELECT UNIT_CODE FROM PART_BOM_REPORT PBR WHERE V.BOM_REPORT_OBJID = PBR.OBJID) -->
<!-- LEFT OUTER JOIN (
SELECT
PART_OBJID
,SUM(RECEIPT_QTY::INTEGER) as DELIVERY_QTY
,SUM(DELIVERY_QTY::INTEGER) as DELIVERY_QTY
FROM
ARRIVAL_PLAN
DELIVERY_HISTORY
GROUP BY PART_OBJID
) AS DH
ON DH.PART_OBJID = V.PART_OBJID -->
WHERE 1=1
<!--
AND IS_LAST='1'
-->
ORDER BY V.PATH2
</select>
<!-- 공정 실적 등록 -->
<update id="mergeassemblyList" parameterType="map">
INSERT INTO ASSEMBLY_WBS_TASK
(
OBJID
,BOM_QTY_CHILD_OBJID
,PART_OBJID
,PARENT_OBJID
<!-- ,RECEIVE_DATE
,RECEIVE_QTY
,RECEIVE_USER_ID -->
,ASSEMBLY_USER_ID
<!-- ,TRANSFER_USER_ID -->
,ASSEMBLY_DATE
,INSOURCING
,OUTSOURCING
,WRITER
,REGDATE
)
VALUES
(
#{OBJID}
,#{CHILD_OBJID}
,#{PART_OBJID}
,#{PARENT_OBJID}
<!-- ,#{RECEIVE_DATE}
,#{RECEIVE_QTY}
,#{RECEIVE_USER_ID} -->
,#{ASSEMBLY_USER_ID}
<!-- ,#{TRANSFER_USER_ID} -->
,#{ASSEMBLY_DATE}
,#{INSOURCING}
,#{OUTSOURCING}
,#{WRITER}
,now()
) ON CONFLICT (OBJID) DO
UPDATE
SET
<!-- RECEIVE_DATE = #{RECEIVE_DATE}
,RECEIVE_QTY = #{RECEIVE_QTY}
,RECEIVE_USER_ID = #{RECEIVE_USER_ID} -->
ASSEMBLY_USER_ID = #{ASSEMBLY_USER_ID}
<!-- ,TRANSFER_USER_ID = #{TRANSFER_USER_ID} -->
,ASSEMBLY_DATE = #{ASSEMBLY_DATE}
,INSOURCING = #{INSOURCING}
,OUTSOURCING = #{OUTSOURCING}
,WRITER = #{WRITER}
</update>
<select id="inspectionGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
(SELECT COUNT(1) FROM INSPECTION_MGMT AS O WHERE O.PARENT_OBJID = T.OBJID) AS INSPECTION_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = T.OBJID AND DOC_TYPE='ADMISSION_INSPECTION_FILE' AND UPPER(STATUS) = 'ACTIVE') AS ADMISSION_INSPECTION_CNT
,OBJID
,CATEGORY_CD
,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME
,CUSTOMER_OBJID
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME
,PRODUCT
,CODE_NAME(PRODUCT) AS PRODUCT_NAME
,(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
,STATUS_CD
,CODE_NAME(STATUS_CD) AS STATUS_NAME
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,CODE_NAME(FACILITY) AS FACILITY_NAME
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CODE_NAME(BUS_CAL_CD) AS BUS_CAL_NAME
,CATEGORY1_CD
,CODE_NAME(CATEGORY1_CD) AS CATEGORY1_NAME
,CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CHG_USER_ID ) AS CHG_USER_NAME
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,CODE_NAME(RESULT_CD) AS RESULT_NAME
,PROJECT_NO
,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
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,CODE_NAME(CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,REGDATE
,TO_CHAR(REGDATE,'YYYY-MM-DD') AS REG_DATE
,WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CODE_NAME(CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CODE_NAME(MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,CONTRACT_RESULT
,CODE_NAME(CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,CODE_NAME(AREA_CD) AS AREA_NAME
,PROJECT_NAME
,MECHANICAL_TYPE
FROM
PROJECT_MGMT AS T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product !=null and product != '' ">
AND PRODUCT = #{product}
</if>
<if test="pm_user_id !=null and pm_user_id != '' ">
AND PM_USER_ID = #{pm_user_id}
</if>
<if test="unit_code !=null and unit_code != '' ">
AND UNIT_CODE = #{unit_code}
</if>
<if test="writer !=null and writer != '' ">
AND WRITER = #{writer}
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
</select>
<select id="workStatusByImployeeList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
OBJID
,CATEGORY_CD
,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME
,CUSTOMER_OBJID
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME
,PRODUCT
,CODE_NAME(PRODUCT) AS PRODUCT_NAME
,(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
,STATUS_CD
,CODE_NAME(STATUS_CD) AS STATUS_NAME
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,CODE_NAME(FACILITY) AS FACILITY_NAME
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CODE_NAME(BUS_CAL_CD) AS BUS_CAL_NAME
,CATEGORY1_CD
,CODE_NAME(CATEGORY1_CD) AS CATEGORY1_NAME
,CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CHG_USER_ID ) AS CHG_USER_NAME
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,CODE_NAME(RESULT_CD) AS RESULT_NAME
,PROJECT_NO
,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
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,CODE_NAME(CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,REGDATE
,TO_CHAR(REGDATE,'YYYY-MM-DD') AS REG_DATE
,WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CODE_NAME(CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CODE_NAME(MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,CONTRACT_RESULT
,CODE_NAME(CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,CODE_NAME(AREA_CD) AS AREA_NAME
,PROJECT_NAME
,MECHANICAL_TYPE
,WD.WORKER_ID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) AS WORKER_DEPT_NAME
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) AS WORKER_USER_NAME
,WD.WORK_HOUR
,ROUND((WD.WORK_HOUR::float / 8)::numeric,1) AS MAN_DAY
,ROUND((WD.WORK_HOUR::float / 8 / 22)::numeric,1) AS MAN_MONTH
FROM
PROJECT_MGMT AS T
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,WORKER_ID
,SUM(work_hour::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
GROUP BY CONTRACT_OBJID, WORKER_ID ) AS WD
ON WD.CONTRACT_OBJID = T.OBJID
WHERE 1=1
<!-- SELECT
T.OBJID,
T.CUSTOMER_OBJID,
(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID) AS CUSTOMER_NAME,
T.CONTRACT_OBJID,
(SELECT CUSTOMER_PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME,
(SELECT PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NAME,
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO,
(SELECT MECHANICAL_TYPE FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS MECHANICAL_TYPE,
(SELECT DUE_DATE FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS DUE_DATE,
(SELECT SETUP FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS SETUP,
(SELECT USER_NAME(PM_USER_ID) FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PM_USER_NAME,
(SELECT CODE_NAME(PRODUCT) FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PRODUCT_NAME,
T.UNIT_CODE,
(SELECT TASK_NAME FROM PMS_WBS_TASK_STANDARD AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
T.STATUS,
CASE UPPER(T.STATUS)
WHEN 'CREATE' THEN '등록중'
WHEN 'CHANGEDESIGN' THEN '설계변경미배포'
WHEN 'DEPLOY' THEN '배포완료'
ELSE ''
END STATUS_TITLE,
T.WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) AS DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) || '/' || (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) as DEPT_USER_NAME,
T.REGDATE AS REGDATE,
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS REG_DATE,
T.DEPLOY_DATE,
T.REVISION,
(SELECT MAX(PM.EO_NO) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_NO,
(SELECT MAX(PM.EO_DATE) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_DATE,
T.NOTE,
AWT.ASSEMBLY_USER_ID,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = AWT.ASSEMBLY_USER_ID) AS ASSEMBLY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = AWT.ASSEMBLY_USER_ID) AS ASSEMBLY_USER_NAME,
AWT.WORK_HOUR,
ROUND((AWT.WORK_HOUR::float / 8)::numeric,1) AS MAN_DAY,
ROUND((AWT.WORK_HOUR::float / 8 / 22)::numeric,1) AS MAN_MONTH
FROM
PART_BOM_REPORT AS T
LEFT OUTER JOIN
(SELECT
PARENT_OBJID,
ASSEMBLY_USER_ID,
COUNT(*) AS WORK_HOUR
FROM
ASSEMBLY_WBS_TASK AWT
WHERE (AWT.ASSEMBLY_USER_ID != '' AND AWT.ASSEMBLY_USER_ID IS NOT NULL)
GROUP BY
PARENT_OBJID,
ASSEMBLY_USER_ID) as AWT
ON AWT.PARENT_OBJID = T.OBJID
AND AWT.ASSEMBLY_USER_ID != ''
WHERE 1=1 -->
<!-- <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="unit_code !=null and unit_code != '' ">
AND T.UNIT_CODE = #{unit_code}
</if>
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) = #{busUsersDeptId}
</if>
<if test="worker !=null and worker != '' ">
AND WD.WORKER_ID = #{worker}
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
<!-- ORDER BY T.UNIT_CODE -->
</select>
<select id="workStatusByImployeeNPList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
WD.WORKER_ID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) AS WORKER_DEPT_NAME
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) AS WORKER_USER_NAME
,WD.WORK_HOUR
,ROUND((WD.WORK_HOUR::float / 8)::numeric,1) AS MAN_DAY
,ROUND((WD.WORK_HOUR::float / 8 / 22)::numeric,1) AS MAN_MONTH
FROM
(SELECT
WORKER_ID
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID = '' OR WD.CONTRACT_OBJID IS NULL
AND STATUS = 'complete'
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
GROUP BY WORKER_ID ) AS WD
WHERE 1=1
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) = #{busUsersDeptId}
</if>
<if test="worker !=null and worker != '' ">
AND WD.WORKER_ID = #{worker}
</if>
</select>
<!-- workStatusByImployeeList 쿼리의 총계만 계산하여 가져온다. -->
<select id="workStatusByImployeeList_sum" parameterType="map" resultType="map">
SELECT
COALESCE(SUM(WORK_HOUR),'0') AS SUM_WORK_HOUR,
COALESCE(SUM(MAN_DAY),'0') AS SUM_MAN_DAY,
COALESCE(SUM(MAN_MONTH),'0') AS SUM_MAN_MONTH
FROM(
SELECT
OBJID
,CATEGORY_CD
,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME
,CUSTOMER_OBJID
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME
,PRODUCT
,CODE_NAME(PRODUCT) AS PRODUCT_NAME
,(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
,STATUS_CD
,CODE_NAME(STATUS_CD) AS STATUS_NAME
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,CODE_NAME(FACILITY) AS FACILITY_NAME
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CODE_NAME(BUS_CAL_CD) AS BUS_CAL_NAME
,CATEGORY1_CD
,CODE_NAME(CATEGORY1_CD) AS CATEGORY1_NAME
,CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CHG_USER_ID ) AS CHG_USER_NAME
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,CODE_NAME(RESULT_CD) AS RESULT_NAME
,PROJECT_NO
,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
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,CODE_NAME(CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,REGDATE
,TO_CHAR(REGDATE,'YYYY-MM-DD') AS REG_DATE
,WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CODE_NAME(CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CODE_NAME(MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,CONTRACT_RESULT
,CODE_NAME(CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,CODE_NAME(AREA_CD) AS AREA_NAME
,PROJECT_NAME
,MECHANICAL_TYPE
,WD.WORKER_ID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) AS WORKER_DEPT_NAME
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) AS WORKER_USER_NAME
,WD.WORK_HOUR
,ROUND((WD.WORK_HOUR::float / 8)::numeric,1) AS MAN_DAY
,ROUND((WD.WORK_HOUR::float / 8 / 22)::numeric,1) AS MAN_MONTH
FROM
PROJECT_MGMT AS T
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,WORKER_ID
,SUM(work_hour::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
GROUP BY CONTRACT_OBJID, WORKER_ID ) AS WD
ON WD.CONTRACT_OBJID = T.OBJID
WHERE 1=1
<if test="project_no !=null and project_no != '' ">
AND T.OBJID = #{project_no}
</if>
<if test="unit_code !=null and unit_code != '' ">
AND T.UNIT_CODE = #{unit_code}
</if>
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) = #{busUsersDeptId}
</if>
<if test="worker !=null and worker != '' ">
AND WD.WORKER_ID = #{worker}
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
) AS TOTAL_SUM
</select>
<select id="workStatusByProjectList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
T.*,
T.WORK_HOUR,
ROUND((T.WORK_HOUR::float / 8)::numeric,1) AS MAN_DAY,
ROUND((T.WORK_HOUR::float / 8 / 22)::numeric,1) AS MAN_MONTH
FROM
(SELECT
T.OBJID,
T.CUSTOMER_OBJID,
(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID) AS CUSTOMER_NAME,
T.CONTRACT_OBJID,
(SELECT CUSTOMER_PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME,
(SELECT PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NAME,
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO,
(SELECT MECHANICAL_TYPE FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS MECHANICAL_TYPE,
(SELECT DUE_DATE FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS DUE_DATE,
(SELECT SETUP FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS SETUP,
(SELECT USER_NAME(PM_USER_ID) FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PM_USER_NAME,
(SELECT CODE_NAME(PRODUCT) FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PRODUCT_NAME,
T.UNIT_CODE,
(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
T.STATUS,
CASE UPPER(T.STATUS)
WHEN 'CREATE' THEN '등록중'
WHEN 'CHANGEDESIGN' THEN '설계변경미배포'
WHEN 'DEPLOY' THEN '배포완료'
ELSE ''
END STATUS_TITLE,
T.WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) AS DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) || '/' || (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) as DEPT_USER_NAME,
T.REGDATE AS REGDATE,
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS REG_DATE,
T.DEPLOY_DATE,
T.REVISION,
(SELECT MAX(PM.EO_NO) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_NO,
(SELECT MAX(PM.EO_DATE) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_DATE,
T.NOTE,
coalesce(D.WORK_HOUR , '0') as DESIGN_INPUT, /*설계*/
coalesce(PC.WORK_HOUR, '0') as PURCHASE_INPUT, /*구매*/
coalesce(S.WORK_HOUR , '0') as SALES_INPUT, /*영업*/
coalesce(PM.WORK_HOUR, '0') as PRODUCTION_MGMT_INPUT, /*생산관리*/
coalesce(P.WORK_HOUR , '0') as PRODUCTION_INPUT, /*생산*/
coalesce(M.WORK_HOUR , '0') as MGMT_INPUT, /*관리*/
coalesce(O.WORK_HOUR , '0') as OUTSOURCING, /*외주*/
(coalesce(D.WORK_HOUR,'0'))::numeric + (coalesce(PC.WORK_HOUR,'0'))::numeric + (coalesce(S.WORK_HOUR,'0'))::numeric + (coalesce(PM.WORK_HOUR,'0'))::numeric + (coalesce(P.WORK_HOUR,'0'))::numeric + (coalesce(M.WORK_HOUR,'0'))::numeric + coalesce(O.WORK_HOUR , '0') as WORK_HOUR
<!-- AWT.ASSEMBLY_USER_ID,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = AWT.ASSEMBLY_USER_ID) AS ASSEMBLY_DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = AWT.ASSEMBLY_USER_ID) AS ASSEMBLY_USER_NAME,
AWT.WORK_HOUR,
ROUND((AWT.WORK_HOUR::float / 8)::numeric,1) AS MAN_DAY,
ROUND((AWT.WORK_HOUR::float / 8 / 22)::numeric,1) AS MAN_MONTH -->
FROM
PART_BOM_REPORT AS T
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT014','DPT006')
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS D
ON D.UNIT_CODE = T.UNIT_CODE
AND D.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT012','DPT004')
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS PC
ON PC.UNIT_CODE = T.UNIT_CODE
AND PC.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) = 'DPT016'
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS S
ON S.UNIT_CODE = T.UNIT_CODE
AND S.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT003','DPT018')
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS PM
ON PM.UNIT_CODE = T.UNIT_CODE
AND PM.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT005','DPT023','DPT013')
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS P
ON P.UNIT_CODE = T.UNIT_CODE
AND P.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT019','DPT001','DPT002')
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS M
ON M.UNIT_CODE = T.UNIT_CODE
AND M.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID ,
UNIT_CODE ,
SUM(WORK_HOUR::numeric) as WORK_HOUR
FROM
WORK_DIARY WD
WHERE
WD.CONTRACT_OBJID != ''
AND WD.CONTRACT_OBJID IS NOT NULL
AND STATUS = 'complete'
AND SOURCING_TYPE = 'outsourcing'
GROUP BY
CONTRACT_OBJID,
UNIT_CODE
) AS O
ON O.UNIT_CODE = T.UNIT_CODE
AND O.CONTRACT_OBJID = T.CONTRACT_OBJID ) T
<!-- LEFT OUTER JOIN
(SELECT
PARENT_OBJID,
ASSEMBLY_USER_ID,
COUNT(*) AS WORK_HOUR
FROM
ASSEMBLY_WBS_TASK AWT
WHERE (AWT.ASSEMBLY_USER_ID != '' AND AWT.ASSEMBLY_USER_ID IS NOT NULL)
GROUP BY
PARENT_OBJID,
ASSEMBLY_USER_ID) as AWT
ON AWT.PARENT_OBJID = T.OBJID
AND AWT.ASSEMBLY_USER_ID != '' -->
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(T.REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND T.CONTRACT_OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND T.CONTRACT_OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="unit_code !=null and unit_code != '' ">
AND T.UNIT_CODE = #{unit_code}
</if>
<!-- <if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = AWT.ASSEMBLY_USER_ID) = #{busUsersDeptId}
</if>
<if test="worker !=null and worker != '' ">
AND AWT.ASSEMBLY_USER_ID = #{worker}
</if> -->
ORDER BY T.UNIT_CODE
</select>
<!-- workStatusByProjectList 쿼리의 총계만 계산하여 가져온다. -->
<select id="workStatusByProjectList_sum" parameterType="map" resultType="map">
SELECT
coalesce(SUM(DESIGN_INPUT), '0') as SUM_DESIGN_INPUT,
coalesce(SUM(PURCHASE_INPUT), '0') as SUM_PURCHASE_INPUT,
coalesce(SUM(SALES_INPUT), '0') as SUM_SALES_INPUT,
coalesce(SUM(PRODUCTION_MGMT_INPUT), '0') as SUM_PRODUCTION_MGMT_INPUT,
coalesce(SUM(PRODUCTION_INPUT), '0') as SUM_PRODUCTION_INPUT,
coalesce(SUM(MGMT_INPUT), '0') as SUM_MGMT_INPUT,
coalesce(SUM(OUTSOURCING), '0') as SUM_OUTSOURCING,
COALESCE(SUM(WORK_HOUR),'0') AS SUM_WORK_HOUR,
COALESCE(SUM(MAN_DAY),'0') AS SUM_MAN_DAY,
COALESCE(SUM(MAN_MONTH),'0') AS SUM_MAN_MONTH
FROM(
SELECT
T.*,
ROUND((T.WORK_HOUR::float / 8)::numeric,1) AS MAN_DAY,
ROUND((T.WORK_HOUR::float / 8 / 22)::numeric,1) AS MAN_MONTH
FROM
(SELECT
T.OBJID,
T.CUSTOMER_OBJID,
(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = T.CUSTOMER_OBJID) AS CUSTOMER_NAME,
T.CONTRACT_OBJID,
(SELECT CUSTOMER_PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME,
(SELECT PROJECT_NAME FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NAME,
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO,
(SELECT MECHANICAL_TYPE FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS MECHANICAL_TYPE,
(SELECT DUE_DATE FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS DUE_DATE,
(SELECT SETUP FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS SETUP,
(SELECT USER_NAME(PM_USER_ID) FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PM_USER_NAME,
(SELECT CODE_NAME(PRODUCT) FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PRODUCT_NAME,
T.UNIT_CODE,
(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_NAME,
T.STATUS,
CASE UPPER(T.STATUS)
WHEN 'CREATE' THEN '등록중'
WHEN 'CHANGEDESIGN' THEN '설계변경미배포'
WHEN 'DEPLOY' THEN '배포완료'
ELSE ''
END STATUS_TITLE,
T.WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) AS DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) || '/' || (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) as DEPT_USER_NAME,
T.REGDATE AS REGDATE,
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS REG_DATE,
T.DEPLOY_DATE,
T.REVISION,
(SELECT MAX(PM.EO_NO) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_NO,
(SELECT MAX(PM.EO_DATE) FROM BOM_PART_QTY AS BP LEFT JOIN PART_MNG AS PM ON BP.PART_NO = PM.OBJID::VARCHAR WHERE BP.BOM_REPORT_OBJID =T.OBJID) AS EO_DATE,
T.NOTE,
coalesce(D.WORK_HOUR , '0') as DESIGN_INPUT, /*설계*/
coalesce(PC.WORK_HOUR, '0') as PURCHASE_INPUT, /*구매*/
coalesce(S.WORK_HOUR , '0') as SALES_INPUT, /*영업*/
coalesce(PM.WORK_HOUR, '0') as PRODUCTION_MGMT_INPUT, /*생산관리*/
coalesce(P.WORK_HOUR , '0') as PRODUCTION_INPUT, /*생산*/
coalesce(M.WORK_HOUR , '0') as MGMT_INPUT, /*관리*/
coalesce(O.WORK_HOUR , '0') as OUTSOURCING, /*외주*/
(coalesce(D.WORK_HOUR,'0'))::numeric + (coalesce(PC.WORK_HOUR,'0'))::numeric + (coalesce(S.WORK_HOUR,'0'))::numeric + (coalesce(PM.WORK_HOUR,'0'))::numeric + (coalesce(P.WORK_HOUR,'0'))::numeric + (coalesce(M.WORK_HOUR,'0'))::numeric + (coalesce(O.WORK_HOUR , '0'))::numeric as WORK_HOUR
FROM
PART_BOM_REPORT AS T
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT014','DPT006')
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS D
ON D.UNIT_CODE = T.UNIT_CODE
AND D.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT012','DPT004')
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS PC
ON PC.UNIT_CODE = T.UNIT_CODE
AND PC.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) = 'DPT016'
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS S
ON S.UNIT_CODE = T.UNIT_CODE
AND S.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT003','DPT018')
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS PM
ON PM.UNIT_CODE = T.UNIT_CODE
AND PM.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT005','DPT023','DPT013')
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS P
ON P.UNIT_CODE = T.UNIT_CODE
AND P.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,UNIT_CODE
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT019','DPT001','DPT002')
GROUP BY CONTRACT_OBJID, UNIT_CODE, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS M
ON M.UNIT_CODE = T.UNIT_CODE
AND M.CONTRACT_OBJID = T.CONTRACT_OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID ,
UNIT_CODE ,
SUM(WORK_HOUR::numeric) as WORK_HOUR
FROM
WORK_DIARY WD
WHERE
WD.CONTRACT_OBJID != ''
AND WD.CONTRACT_OBJID IS NOT NULL
AND STATUS = 'complete'
AND SOURCING_TYPE = 'outsourcing'
GROUP BY
CONTRACT_OBJID,
UNIT_CODE
) AS O
ON O.UNIT_CODE = T.UNIT_CODE
AND O.CONTRACT_OBJID = T.CONTRACT_OBJID ) T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(T.REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND T.CONTRACT_OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND T.CONTRACT_OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="unit_code !=null and unit_code != '' ">
AND T.UNIT_CODE = #{unit_code}
</if>
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = AWT.ASSEMBLY_USER_ID) = #{busUsersDeptId}
</if>
<if test="worker !=null and worker != '' ">
AND AWT.ASSEMBLY_USER_ID = #{worker}
</if>
ORDER BY T.UNIT_CODE
) AS TOTAL_SUM
</select>
<select id="getAssemblyWbsHistoryList" parameterType="map" resultType="map">
SELECT
IMO.OBJID
,IMO.PARENT_OBJID
,IMO.CONTRACT_MGMT_OBJID
,IMO.UNIT
,IMO.OUT_DATE AS RECEIVE_DATE
,IMO.OUT_QTY AS RECEIVE_QTY
,IMO.ACQ_USER AS RECEIVE_USER_ID
,USER_NAME(IMO.ACQ_USER) AS RECEIVE_USER_NAME
,IMO.WRITER AS TRANSFER_USER_ID
,USER_NAME(IMO.WRITER) AS TRANSFER_USER_NAME
,IM.PART_OBJID
FROM
INVENTORY_MGMT_OUT IMO
LEFT OUTER JOIN INVENTORY_MGMT IM
ON IMO.PARENT_OBJID = IM.OBJID
WHERE PART_OBJID = #{PART_OBJID}
AND CONTRACT_MGMT_OBJID = #{PROJECT_NAME}
AND IMO.UNIT = #{UNIT}
<!-- SELECT
RH.OBJID
,RH.PART_OBJID
,RH.PARENT_OBJID
,RH.RECEIVE_DATE
,RH.RECEIVE_QTY
,RH.RECEIVE_USER_ID
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = RH.RECEIVE_USER_ID) AS RECEIVE_USER_NAME
,RH.TRANSFER_USER_ID
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = RH.TRANSFER_USER_ID) AS TRANSFER_USER_NAME
FROM
RECEIVE_HISTORY RH
WHERE PART_OBJID = #{PART_OBJID}
AND PARENT_OBJID = #{PARENT_OBJID} -->
</select>
<update id="deleteassemblyWbsHistoryList" parameterType="map">
DELETE FROM RECEIVE_HISTORY WHERE OBJID = #{OBJID}
</update>
<delete id="deleteAllAssemblyHistoryList" parameterType="map">
DELETE FROM RECEIVE_HISTORY
WHERE PARENT_OBJID = #{parentObjId}
AND PART_OBJID = #{partObjid}
</delete>
<update id="saveAssemblyWbsHistory" parameterType="map">
INSERT INTO RECEIVE_HISTORY
(
OBJID
,PART_OBJID
,PARENT_OBJID
,RECEIVE_DATE
,RECEIVE_QTY
,RECEIVE_USER_ID
,TRANSFER_USER_ID
,WRITER
,REGDATE
)
VALUES
(
#{OBJID}
,#{PART_OBJID}
,#{PARENT_OBJID}
,#{RECEIVE_DATE}
,#{RECEIVE_QTY}
,#{RECEIVE_USER_ID}
,#{TRANSFER_USER_ID}
,#{WRITER}
,now()
) ON CONFLICT (OBJID) DO
UPDATE
SET
RECEIVE_DATE = #{RECEIVE_DATE}
,RECEIVE_QTY = #{RECEIVE_QTY}
,RECEIVE_USER_ID = #{RECEIVE_USER_ID}
,TRANSFER_USER_ID = #{TRANSFER_USER_ID}
,WRITER = #{WRITER}
</update>
<select id="workDiaryGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
OBJID,
CONTRACT_OBJID,
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO,
UNIT_CODE,
(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_CODE_NAME,
DIVISION,
TASK_NAME,
WORKER_ID,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = T.WORKER_ID) AS DEPT_NAME,
USER_NAME(WORKER_ID) AS WORKER_NAME,
WORK_START_DATE,
WORK_END_DATE,
WORK_HOUR,
REMARK,
REGDATE,
WRITER,
SOURCING_TYPE,
PRODUCTION_TYPE,
USER_NAME(WRITER) AS WRITER_NAME,
TO_CHAR(REGDATE,'YYYY-MM-DD') AS REG_DATE_TEXT,
STATUS,
CASE WHEN T.STATUS = 'write' THEN '작성중'
WHEN T.STATUS = 'complete' THEN '확인완료'
ELSE ''
END STATUS_TITLE
FROM
WORK_DIARY AS T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(T.REGDATE,'YYYY') = #{Year}
</if>
<if test="search_division !=null and search_division != '' ">
AND DIVISION = #{search_division}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND T.CONTRACT_OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND T.CONTRACT_OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="unit_code !=null and unit_code != '' ">
AND T.UNIT_CODE = #{unit_code}
</if>
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = T.WORKER_ID) = #{busUsersDeptId}
</if>
<if test="worker !=null and worker != '' ">
AND T.WORKER_ID = #{worker}
</if>
<if test="search_status !=null and search_status != '' ">
AND T.STATUS = #{search_status}
</if>
<if test="objId !=null and objId != '' ">
AND T.OBJID = #{objId}
</if>
ORDER BY REGDATE desc
</select>
<select id="selectWorkDiaryInfo" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
OBJID,
CONTRACT_OBJID,
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS PROJECT_NO,
UNIT_CODE,
(SELECT TASK_NAME FROM pms_wbs_task_standard AS O WHERE O.OBJID = T.UNIT_CODE) AS UNIT_CODE_NAME,
DIVISION,
TASK_NAME,
WORKER_ID,
USER_NAME(WORKER_ID) AS WORKER_NAME,
WORK_START_DATE,
WORK_END_DATE,
WORK_HOUR,
REMARK,
REGDATE,
WRITER,
USER_NAME(WRITER) AS WRITER_NAME,
TO_CHAR(REGDATE,'YYYY-MM-DD') AS REG_DATE_TEXT,
STATUS,
CASE WHEN T.STATUS = 'write' THEN '작성중'
WHEN T.STATUS = 'complete' THEN '확인완료'
END STATUS_TITLE,
SOURCING_TYPE,
PRODUCTION_TYPE
FROM
WORK_DIARY AS T
WHERE T.OBJID = #{objId}
</select>
<update id="mergeWorkDiaryInfo" parameterType="map">
INSERT INTO WORK_DIARY
(
OBJID
,CONTRACT_OBJID
,UNIT_CODE
,DIVISION
,TASK_NAME
,WORKER_ID
,WORK_START_DATE
,WORK_END_DATE
,WORK_HOUR
,REMARK
,STATUS
,WRITER
,REGDATE
,SOURCING_TYPE
,PRODUCTION_TYPE
)
VALUES
(
#{objId }
,#{project_objid }
,#{unit_code }
,#{division }
,#{task_name }
,#{worker_id }
,#{work_start_date }
,#{work_end_date }
,#{work_hour }
,#{remark }
,'write'
,#{writer }
,now()
,#{sourcing_type }
,#{production_type }
) ON CONFLICT (OBJID) DO
UPDATE
SET
CONTRACT_OBJID = #{project_objid }
,UNIT_CODE = #{unit_code }
,DIVISION = #{division }
,TASK_NAME = #{task_name }
,WORKER_ID = #{worker_id }
,WORK_START_DATE = #{work_start_date }
,WORK_END_DATE = #{work_end_date }
,WORK_HOUR = #{work_hour }
,REMARK = #{remark }
<!-- ,STATUS = #{status } -->
,SOURCING_TYPE = #{sourcing_type }
,PRODUCTION_TYPE = #{production_type }
</update>
<delete id="workDiaryDelete" parameterType="map">
DELETE FROM WORK_DIARY WHERE OBJID = #{OBJID}
</delete>
<update id="workDiaryConfirm" parameterType="map">
UPDATE WORK_DIARY SET
STATUS='complete'
WHERE OBJID = #{OBJID}
</update>
<!-- 작업관리 -> 현황 -->
<select id="workMgmtdashboardGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
T.*,
T.WORK_HOUR,
ROUND((T.WORK_HOUR::float / 8)::numeric,1) AS MAN_DAY,
ROUND((T.WORK_HOUR::float / 8 / 22)::numeric,1) AS MAN_MONTH
FROM
(SELECT
OBJID
,CATEGORY_CD
,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME
,CUSTOMER_OBJID
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME
,PRODUCT
,CODE_NAME(PRODUCT) AS PRODUCT_NAME
,(SELECT O.CUSTOMER_PROJECT_NAME FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS CUSTOMER_PROJECT_NAME
,STATUS_CD
,CODE_NAME(STATUS_CD) AS STATUS_NAME
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,CODE_NAME(FACILITY) AS FACILITY_NAME
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CODE_NAME(BUS_CAL_CD) AS BUS_CAL_NAME
,CATEGORY1_CD
,CODE_NAME(CATEGORY1_CD) AS CATEGORY1_NAME
,CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CHG_USER_ID ) AS CHG_USER_NAME
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,CODE_NAME(RESULT_CD) AS RESULT_NAME
,PROJECT_NO
,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
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,CODE_NAME(CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,REGDATE
,TO_CHAR(REGDATE,'YYYY-MM-DD') AS REG_DATE
,WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CODE_NAME(CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CODE_NAME(MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,CONTRACT_RESULT
,CODE_NAME(CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,CODE_NAME(AREA_CD) AS AREA_NAME
,PROJECT_NAME
,MECHANICAL_TYPE
,coalesce(D.WORK_HOUR , '0') as DESIGN_INPUT /*설계*/
,coalesce(PC.WORK_HOUR, '0') as PURCHASE_INPUT /*구매*/
,coalesce(S.WORK_HOUR , '0') as SALES_INPUT /*영업*/
,coalesce(PM.WORK_HOUR, '0') as PRODUCTION_MGMT_INPUT /*생산관리*/
,coalesce(P.WORK_HOUR , '0') as PRODUCTION_INPUT /*생산*/
,coalesce(M.WORK_HOUR , '0') as MGMT_INPUT /*관리*/
,coalesce(O.WORK_HOUR , '0') as OUTSOURCING /*외주*/
,(coalesce(D.WORK_HOUR,'0'))::numeric + (coalesce(PC.WORK_HOUR,'0'))::numeric + (coalesce(S.WORK_HOUR,'0'))::numeric + (coalesce(PM.WORK_HOUR,'0'))::numeric
+ (coalesce(P.WORK_HOUR,'0'))::numeric + (coalesce(M.WORK_HOUR,'0'))::numeric + coalesce(O.WORK_HOUR , '0') as WORK_HOUR
FROM PROJECT_MGMT AS T
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT014','DPT006')
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) = #{busUsersDeptId}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS D
ON D.CONTRACT_OBJID = T.OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT012','DPT004')
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) = #{busUsersDeptId}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS PC
ON PC.CONTRACT_OBJID = T.OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) = 'DPT016'
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) = #{busUsersDeptId}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS S
ON S.CONTRACT_OBJID = T.OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT003','DPT018')
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) = #{busUsersDeptId}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS PM
ON PM.CONTRACT_OBJID = T.OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT005','DPT023','DPT013')
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) = #{busUsersDeptId}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS P
ON P.CONTRACT_OBJID = T.OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID)
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) IN ('DPT019','DPT001','DPT002')
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND (SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) = #{busUsersDeptId}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
GROUP BY CONTRACT_OBJID, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WD.WORKER_ID) ) AS M
ON M.CONTRACT_OBJID = T.OBJID
LEFT OUTER JOIN
(SELECT
CONTRACT_OBJID
,SUM(WORK_HOUR::numeric) AS WORK_HOUR
FROM
WORK_DIARY WD
WHERE WD.CONTRACT_OBJID != '' AND WD.CONTRACT_OBJID IS NOT null
AND STATUS = 'complete'
AND SOURCING_TYPE = 'outsourcing'
<if test="busUsersDeptId !=null and busUsersDeptId != '' ">
AND SOURCING_TYPE = #{busUsersDeptId}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
GROUP BY CONTRACT_OBJID ) AS O
ON O.CONTRACT_OBJID = T.OBJID ) T
WHERE 1=1
<!-- <if test="Year !=null and Year != '' ">
AND TO_CHAR(T.REGDATE,'YYYY') = #{Year}
</if> -->
<if test="project_no !=null and project_no != '' ">
AND T.OBJID = #{project_no}
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
</select>
</mapper>