458 lines
13 KiB
XML
458 lines
13 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="productKindSpec">
|
|
|
|
<select id ="selectProductKindSpecMaster" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
SELECT
|
|
COALESCE(SUBSTRING(PROJECT_NO_MAX,POSITION('-' IN PROJECT_NO_MAX)+1), '0') PROJECT_NO_MAX_NUM,
|
|
T.*
|
|
FROM
|
|
(SELECT
|
|
CODE_NAME(T.PRODUCT) AS PRODUCT_NAME
|
|
,T.FACILITY_QTY
|
|
,WT.TITLE
|
|
,(SELECT MAX(PROJECT_NO) FROM PROJECT_MGMT P WHERE T.OBJID = P.CONTRACT_OBJID) PROJECT_NO_MAX
|
|
FROM CONTRACT_MGMT T
|
|
INNER JOIN PMS_WBS_TEMPLATE WT
|
|
ON T.PRODUCT = WT.PRODUCT_OBJID
|
|
WHERE 1=1
|
|
AND T.OBJID = #{OBJID_CONTRACT}
|
|
AND WT.TITLE = #{MECHANICAL_TYPE}
|
|
<!--
|
|
LIMIT 1
|
|
-->
|
|
) T
|
|
</select>
|
|
<select id ="selectProductKindSpecProjectList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
SELECT
|
|
CODE_NAME(T.PRODUCT) AS PRODUCT_NAME
|
|
,T.FACILITY_QTY
|
|
,REPLACE(PROJECT_NO, '-', '_') PROJECT_NO
|
|
FROM PROJECT_MGMT T
|
|
WHERE 1=1
|
|
AND T.CONTRACT_OBJID = #{OBJID_CONTRACT}
|
|
<!--
|
|
AND T.OBJID = #{OBJID}
|
|
-->
|
|
ORDER BY PROJECT_NO ASC
|
|
</select>
|
|
|
|
<select id ="searchProductKindSpecGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
SELECT
|
|
<!--
|
|
TITLE||'-'|| (SUBSTRING(COALESCE(PROJECT_NO_MAX, '0'), POSITION('-' IN PROJECT_NO_MAX)+1)::NUMERIC+1)
|
|
||' ~ '||
|
|
TITLE||'-'||((SUBSTRING(COALESCE(PROJECT_NO_MAX, '0'), POSITION('-' IN PROJECT_NO_MAX)+1)::NUMERIC)+(FACILITY_QTY::NUMERIC)) PROJECT_NO_MAX_NUM,
|
|
|
|
CASE WHEN T.FACILITY_QTY::NUMERIC < 2 THEN (SELECT MAX(PROJECT_NO) FROM PROJECT_MGMT P WHERE P.CONTRACT_OBJID = T.OBJID_CONTRACT)
|
|
ELSE
|
|
(SELECT MIN(PROJECT_NO) FROM PROJECT_MGMT P WHERE P.CONTRACT_OBJID = T.OBJID_CONTRACT)
|
|
||' ~ '||
|
|
(SELECT MAX(PROJECT_NO) FROM PROJECT_MGMT P WHERE P.CONTRACT_OBJID = T.OBJID_CONTRACT)
|
|
END PROJECT_NO_MAX_NUM,
|
|
-->
|
|
T.*
|
|
FROM
|
|
(
|
|
SELECT
|
|
T.OBJID OBJID_CONTRACT
|
|
,CASE WHEN T.FACILITY_QTY::NUMERIC < 2 THEN (SELECT MAX(PROJECT_NO) FROM PROJECT_MGMT P WHERE P.CONTRACT_OBJID = T.OBJID)
|
|
ELSE
|
|
(SELECT MIN(PROJECT_NO) FROM PROJECT_MGMT P WHERE P.CONTRACT_OBJID = T.OBJID)
|
|
||' ~ '||
|
|
(SELECT MAX(PROJECT_NO) FROM PROJECT_MGMT P WHERE P.CONTRACT_OBJID = T.OBJID)
|
|
END PROJECT_NO_MAX_NUM
|
|
,T.CATEGORY_CD
|
|
,CODE_NAME(T.CATEGORY_CD) AS CATEGORY_NAME
|
|
,T.CUSTOMER_OBJID
|
|
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME
|
|
,T.PRODUCT
|
|
,CODE_NAME(T.PRODUCT)||'('||T.MECHANICAL_TYPE||')' AS PRODUCT_NAME
|
|
,T.MECHANICAL_TYPE
|
|
,T.CUSTOMER_PROJECT_NAME
|
|
,T.STATUS_CD
|
|
,CODE_NAME(T.STATUS_CD) AS STATUS_NAME
|
|
,T.DUE_DATE
|
|
,T.LOCATION
|
|
,T.SETUP
|
|
,T.FACILITY
|
|
,CODE_NAME(T.FACILITY) AS FACILITY_NAME
|
|
,T.FACILITY_QTY
|
|
,T.FACILITY_TYPE
|
|
,T.FACILITY_DEPTH
|
|
,T.PRODUCTION_NO
|
|
,T.BUS_CAL_CD
|
|
,CODE_NAME(T.BUS_CAL_CD) AS BUS_CAL_NAME
|
|
,T.CATEGORY1_CD
|
|
,CODE_NAME(T.CATEGORY1_CD) AS CATEGORY1_NAME
|
|
,T.CHG_USER_ID
|
|
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CHG_USER_ID ) AS CHG_USER_NAME
|
|
,T.PLAN_DATE
|
|
,T.COMPLETE_DATE
|
|
,T.RESULT_CD
|
|
,CODE_NAME(T.RESULT_CD) AS RESULT_NAME
|
|
,T.PROJECT_NO
|
|
,T.PM_USER_ID
|
|
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.PM_USER_ID ) AS PM_USER_NAME
|
|
,T.CONTRACT_PRICE
|
|
,T.CONTRACT_PRICE_CURRENCY
|
|
,T.CONTRACT_CURRENCY
|
|
,CODE_NAME(T.CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
|
|
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
|
|
,T.CONTRACT_NO
|
|
,SUBSTR(T.CONTRACT_DATE,0,5) CONTRACT_DATE_YEAR
|
|
,T.CUSTOMER_EQUIP_NAME
|
|
,T.REQ_DEL_DATE
|
|
,T.CONTRACT_DEL_DATE
|
|
,T.CONTRACT_COMPANY
|
|
,CODE_NAME(T.CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
|
|
,T.CONTRACT_DATE
|
|
,T.PO_NO
|
|
,T.MANUFACTURE_PLANT
|
|
,CODE_NAME(T.MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
|
|
,T.CONTRACT_RESULT
|
|
,CODE_NAME(T.CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
|
|
,T.PROJECT_NAME
|
|
,T.AREA_CD
|
|
,CODE_NAME(T.AREA_CD) AS AREA_NAME
|
|
,T.REGDATE
|
|
,TO_CHAR(T.REGDATE,'YYYY-MM-DD') AS REG_DATE
|
|
,TO_CHAR(T.REGDATE,'YYYY') REG_YYYY
|
|
,T.WRITER
|
|
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
|
|
,SPEC.OBJID SPEC_OBJID
|
|
,SPEC.STATUS SPEC_STATUS
|
|
,CASE WHEN SPEC.STATUS = 'REGIST' THEN '등록'
|
|
WHEN SPEC.STATUS = 'DEPLOY' THEN '배포'
|
|
ELSE ''
|
|
END SPEC_STATUS_NAME
|
|
<!--
|
|
,(SELECT MAX(PROJECT_NO) FROM PROJECT_MGMT P WHERE P.PRODUCT = T.PRODUCT) PROJECT_NO_MAX
|
|
-->
|
|
,TO_CHAR(SPEC.REGDATE,'YYYY-MM-DD') AS SPEC_REG_DATE
|
|
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = SPEC.WRITER ) AS SPEC_WRITER_NAME
|
|
,(SELECT TITLE FROM PMS_WBS_TEMPLATE WT WHERE T.MECHANICAL_TYPE = WT.TITLE AND T.PRODUCT = WT.PRODUCT_OBJID ) TITLE
|
|
<!--
|
|
,WT.TITLE
|
|
-->
|
|
FROM CONTRACT_MGMT AS T
|
|
LEFT OUTER JOIN PRODUCT_KIND_SPEC_MAIN SPEC
|
|
ON T.OBJID = SPEC.OBJID_CONTRACT
|
|
<!--
|
|
LEFT OUTER JOIN PMS_WBS_TEMPLATE WT
|
|
ON T.PRODUCT = WT.PRODUCT_OBJID
|
|
-->
|
|
WHERE 1=1
|
|
<if test="Year !=null and Year != '' ">
|
|
AND SUBSTR(T.CONTRACT_DATE,0,5) = #{Year}
|
|
</if>
|
|
|
|
<if test="category_cd !=null and category_cd != '' ">
|
|
AND T.category_cd = #{category_cd}
|
|
</if>
|
|
|
|
<if test="customer_objid !=null and customer_objid != '' ">
|
|
AND T.customer_objid = #{customer_objid}
|
|
</if>
|
|
|
|
<if test="product != null and product !='' ">
|
|
AND T.product = #{product}
|
|
</if>
|
|
|
|
<if test="status_cd !=null and status_cd !=''">
|
|
AND T.status_cd = #{status_cd}
|
|
</if>
|
|
|
|
<if test="result_cd !=null and result_cd !=''">
|
|
AND T.result_cd = #{result_cd}
|
|
</if>
|
|
|
|
<if test="contract_start_date != null and !''.equals(contract_start_date)">
|
|
AND TO_DATE(T.CONTRACT_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(T.CONTRACT_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 T.pm_user_id = #{pm_user_id}
|
|
</if>
|
|
|
|
<if test="setup != null and !''.equals(setup)">
|
|
AND UPPER(T.SETUP) LIKE UPPER('%${setup}%')
|
|
</if>
|
|
|
|
<if test="regUserId !=null and regUserId !=''">
|
|
AND SPEC.WRITER = #{regUserId}
|
|
</if>
|
|
|
|
) T
|
|
WHERE 1=1
|
|
<if test="project_no !=null and project_no != '' ">
|
|
AND PROJECT_NO_MAX_NUM LIKE '%'||#{project_no}||'%'
|
|
</if>
|
|
ORDER BY T.CONTRACT_NO DESC
|
|
</select>
|
|
|
|
<select id ="searchProductKindSpecPopupGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
SELECT
|
|
T.*
|
|
<!--
|
|
,CASE WHEN SPEC.VC_CODE IS NULL OR COALESCE(SPEC.VC_CODE,'') = '' THEN 'VC'|| LPAD(UNIT_NO_RANK::VARCHAR , 2, '0')
|
|
ELSE SPEC.VC_CODE
|
|
END VC_CODE
|
|
-->
|
|
<if test="projectList != null">
|
|
<foreach collection="projectList" item="obj">
|
|
<!--
|
|
,#{obj.PROJECT_NO} as ${obj.PROJECT_NO}
|
|
-->
|
|
,(SELECT OBJID
|
|
FROM PRODUCT_KIND_SPEC SPEC
|
|
WHERE T.UNIT_OBJID = SPEC.UNIT_OBJID
|
|
AND T.TITLE = SPEC.MECHANICAL_TYPE
|
|
AND T.VC_CODE = SPEC.VC_CODE
|
|
AND SPEC.PROJECT_NO = #{obj.PROJECT_NO}
|
|
) as OBJID_${obj.PROJECT_NO}
|
|
,(SELECT VALUE
|
|
FROM PRODUCT_KIND_SPEC SPEC
|
|
WHERE T.UNIT_OBJID = SPEC.UNIT_OBJID
|
|
AND T.TITLE = SPEC.MECHANICAL_TYPE
|
|
AND T.VC_CODE = SPEC.VC_CODE
|
|
AND SPEC.PROJECT_NO = #{obj.PROJECT_NO}
|
|
) as VALUE_${obj.PROJECT_NO}
|
|
</foreach>
|
|
</if>
|
|
FROM(
|
|
SELECT
|
|
T.OBJID UNIT_OBJID
|
|
, T.PARENT_OBJID
|
|
, WT.TITLE
|
|
, T.TASK_NAME
|
|
, T.TASK_SEQ
|
|
, RANK() OVER (PARTITION BY UNIT_NO ORDER BY TASK_SEQ ) UNIT_NO_RANK
|
|
<!--
|
|
, T.USER_ID
|
|
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.USER_ID) AS USER_ID_TITLE
|
|
, T.WRITER
|
|
, T.REG_DATE
|
|
-->
|
|
, T.UNIT_NO
|
|
, SPEC.OBJID_PARENT
|
|
, SPEC.VC_CODE SPEC_VC_CODE
|
|
,CASE WHEN SPEC.VC_CODE IS NULL OR COALESCE(SPEC.VC_CODE,'') = '' THEN 'VC01'
|
|
ELSE SPEC.VC_CODE
|
|
END VC_CODE
|
|
<!--
|
|
, SPEC.OBJID SPEC_OBJID
|
|
, SPEC.PRODUCT
|
|
, SPEC.MECHANICAL_TYPE
|
|
, SPEC.UNIT_OBJID
|
|
, SPEC.VC_CODE VC_CODE_ORG
|
|
, SPEC.PROJECT_NO
|
|
, SPEC.VALUE
|
|
, SPEC.STATUS
|
|
-->
|
|
FROM PMS_WBS_TASK_STANDARD T
|
|
INNER JOIN PMS_WBS_TEMPLATE WT
|
|
ON WT.OBJID = T.PARENT_OBJID
|
|
AND WT.TITLE = #{MECHANICAL_TYPE}
|
|
LEFT OUTER JOIN (
|
|
SELECT SPEC.OBJID_PARENT, SPEC.VC_CODE, SPEC.MECHANICAL_TYPE, SPEC.UNIT_OBJID
|
|
FROM PRODUCT_KIND_SPEC_MAIN SM
|
|
INNER JOIN PRODUCT_KIND_SPEC SPEC
|
|
ON SM.OBJID = SPEC.OBJID_PARENT
|
|
WHERE SM.MECHANICAL_TYPE = #{MECHANICAL_TYPE}
|
|
AND SM.OBJID_CONTRACT = #{OBJID_CONTRACT}
|
|
GROUP BY SPEC.OBJID_PARENT, SPEC.VC_CODE, SPEC.MECHANICAL_TYPE, SPEC.UNIT_OBJID
|
|
) SPEC
|
|
ON T.OBJID = SPEC.UNIT_OBJID
|
|
AND WT.TITLE = SPEC.MECHANICAL_TYPE
|
|
WHERE 1=1
|
|
<!--
|
|
AND T.PARENT_OBJID = (SELECT OBJID FROM PMS_WBS_TEMPLATE WHERE PRODUCT_OBJID = #{OBJID_PRODUCT} LIMIT 1)
|
|
-->
|
|
) T
|
|
ORDER BY T.UNIT_NO, VC_CODE
|
|
</select>
|
|
|
|
<insert id="mergeProductKindSpecMain" parameterType="map">
|
|
<!--
|
|
MERGE INTO PRODUCT_KIND_SPEC_MAIN T
|
|
USING (SELECT #{OBJID} AS OBJID) AS T1
|
|
ON T.OBJID = T1.OBJID
|
|
WHEN MATCHED THEN
|
|
-->
|
|
WITH UPSERT AS (
|
|
UPDATE PRODUCT_KIND_SPEC_MAIN SET
|
|
STATUS = #{STATUS}
|
|
,EDITDATE = NOW()
|
|
,EDITER = #{WRITER}
|
|
WHERE OBJID = #{OBJID}
|
|
)
|
|
<!--
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (
|
|
-->
|
|
INSERT INTO PRODUCT_KIND_SPEC_MAIN(
|
|
OBJID
|
|
,OBJID_CONTRACT
|
|
,PRODUCT
|
|
,MECHANICAL_TYPE
|
|
,STATUS
|
|
,REGDATE
|
|
,EDITDATE
|
|
,WRITER
|
|
,EDITER
|
|
)
|
|
<!--
|
|
VALUES (
|
|
-->
|
|
SELECT
|
|
#{OBJID}
|
|
,#{OBJID_CONTRACT}
|
|
,#{PRODUCT}
|
|
,#{MECHANICAL_TYPE}
|
|
,#{STATUS}
|
|
,NOW()
|
|
,NULL
|
|
,#{WRITER}
|
|
,NULL
|
|
WHERE NOT EXISTS (
|
|
SELECT *
|
|
FROM PRODUCT_KIND_SPEC_MAIN
|
|
WHERE OBJID = #{OBJID}
|
|
)
|
|
|
|
</insert>
|
|
<select id ="getProductKindSpecMain" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
SELECT
|
|
OBJID
|
|
,OBJID_CONTRACT
|
|
,PRODUCT
|
|
,STATUS
|
|
,REGDATE
|
|
,EDITDATE
|
|
,WRITER
|
|
,EDITER
|
|
FROM PRODUCT_KIND_SPEC_MAIN
|
|
WHERE OBJID = #{OBJID}
|
|
</select>
|
|
<delete id="deleteProductKindSpecMain" parameterType="map">
|
|
DELETE
|
|
FROM PRODUCT_KIND_SPEC_MAIN
|
|
WHERE 1=1
|
|
<![CDATA[ AND (CASE WHEN OBJID = '' THEN 0 ELSE POSITION(OBJID||',' IN #{checkArr}||',') END) > 0 ]]>
|
|
<if test="checkArr !=null and checkArr != '' ">
|
|
</if>
|
|
</delete>
|
|
|
|
|
|
<update id="updateProductKindSpecMain" parameterType="map">
|
|
UPDATE PRODUCT_KIND_SPEC_MAIN SET
|
|
STATUS = #{STATUS}
|
|
,EDITDATE = NOW()
|
|
,EDITER = #{WRITER}
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
<update id="updateProductKindSpec" parameterType="map">
|
|
UPDATE PRODUCT_KIND_SPEC SET
|
|
STATUS = #{STATUS}
|
|
,EDITDATE = NOW()
|
|
,EDITER = #{WRITER}
|
|
WHERE OBJID_PARENT = #{OBJID_PARENT}
|
|
</update>
|
|
<insert id="mergeProductKindSpec" parameterType="map">
|
|
<!--
|
|
MERGE INTO PRODUCT_KIND_SPEC T
|
|
USING (SELECT #{OBJID} AS OBJID) AS T1
|
|
ON T.OBJID = T1.OBJID
|
|
WHEN MATCHED THEN
|
|
-->
|
|
WITH UPSERT AS (
|
|
UPDATE PRODUCT_KIND_SPEC SET
|
|
EDITDATE = NOW()
|
|
,EDITER = #{WRITER}
|
|
,VALUE = #{VALUE}
|
|
<if test="VALUE !=null and VALUE != '' ">
|
|
</if>
|
|
,STATUS = #{STATUS}
|
|
WHERE OBJID = #{OBJID}
|
|
)
|
|
<!--
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (
|
|
-->
|
|
INSERT INTO PRODUCT_KIND_SPEC(
|
|
OBJID
|
|
,OBJID_PARENT
|
|
,PRODUCT
|
|
,MECHANICAL_TYPE
|
|
,UNIT_OBJID
|
|
,VC_CODE
|
|
,PROJECT_NO
|
|
,VALUE
|
|
,STATUS
|
|
,REGDATE
|
|
,EDITDATE
|
|
,WRITER
|
|
,EDITER
|
|
)
|
|
<!--
|
|
VALUES (
|
|
-->
|
|
SELECT
|
|
#{OBJID}
|
|
,#{OBJID_PARENT}
|
|
,#{PRODUCT}
|
|
,#{MECHANICAL_TYPE}
|
|
,#{UNIT_OBJID}
|
|
,#{VC_CODE}
|
|
,#{PROJECT_NO}
|
|
,#{VALUE}
|
|
,#{STATUS}
|
|
,NOW()
|
|
,NULL
|
|
,#{WRITER}
|
|
,NULL
|
|
WHERE NOT EXISTS (
|
|
SELECT *
|
|
FROM PRODUCT_KIND_SPEC
|
|
WHERE OBJID = #{OBJID}
|
|
)
|
|
</insert>
|
|
<select id ="getProductKindSpec" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
|
SELECT
|
|
OBJID
|
|
,OBJID_PARENT
|
|
,PRODUCT
|
|
,MECHANICAL_TYPE
|
|
,UNIT_OBJID
|
|
,VC_CODE
|
|
,PROJECT_NO
|
|
,VALUE
|
|
,STATUS
|
|
,REGDATE
|
|
,EDITDATE
|
|
,WRITER
|
|
,EDITER
|
|
FROM PRODUCT_KIND_SPEC
|
|
WHERE OBJID = #{objId}
|
|
</select>
|
|
<delete id="deleteProductKindSpec" parameterType="map">
|
|
DELETE
|
|
FROM PRODUCT_KIND_SPEC
|
|
WHERE 1=1
|
|
<if test="checkArr !=null and checkArr != '' ">
|
|
<![CDATA[ AND (CASE WHEN OBJID_PARENT = '' THEN 0 ELSE POSITION(OBJID_PARENT||',' IN #{checkArr}||',') END) > 0 ]]>
|
|
</if>
|
|
<if test="UNIT_OBJID !=null and UNIT_OBJID != '' ">
|
|
AND OBJID_PARENT = #{OBJID_PARENT}
|
|
AND UNIT_OBJID = #{UNIT_OBJID}
|
|
AND VC_CODE = #{VC_CODE}
|
|
</if>
|
|
</delete>
|
|
|
|
|
|
</mapper>
|