- 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
2873 lines
110 KiB
XML
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 < 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>
|