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

1438 lines
60 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="protoDevMng">
<!-- 입고관리 갑지 목록을 가져온다. -->
<select id="getProtoStockMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM(
</if>
SELECT
INFO.*,
ROW_NUMBER() OVER (ORDER BY REGDATE DESC) AS RNUM, ROUND(((NVL(SUM_STOCK_CNT,0)/DECODE(NVL(SUM_TOTAL_CNT,1),0,1,NVL(SUM_TOTAL_CNT,1))))*100,1) AS SUM_RATIO
FROM (
SELECT INFO.*
FROM(
SELECT INFO.OBJID,
INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = INFO.OEM_OBJID) AS OEM_NAME,
INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_CODE,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
INFO.REGDATE,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
INFO.STATUS,
INFO.WRITER,
INFO.PARTNER_ID,
(SELECT USER_TYPE_NAME FROM USER_INFO WHERE USER_ID = INFO.PARTNER_ID) AS PARTNER_USER_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME,
(SELECT SUM(TOTAL_REQUIRED) FROM PMS_PROTO_STOCK_REL_PART_INFO WHERE TARGET_OBJID = INFO.OBJID) AS SUM_TOTAL_CNT,
(SELECT SUM(RECEIVE_COUNT) FROM PMS_PROTO_STOCK_REL_PART_INFO WHERE TARGET_OBJID = INFO.OBJID) AS SUM_STOCK_CNT,
(SELECT SUM(DELAY_RECEIVE_COUNT) FROM PMS_PROTO_STOCK_REL_PART_INFO WHERE TARGET_OBJID = INFO.OBJID) AS SUM_DELAY_CNT,
(SELECT COUNT(1) FROM PMS_PROTO_STOCK_REL_PART_INFO WHERE TARGET_OBJID = INFO.OBJID) SHAPE_CNT,
(SELECT COUNT(WBS_TASK.OBJID) AS TASK_CNT FROM PMS_WBS_TASK WBS_TASK,PMS_REL_WBS_TASK_FNC_TASK REL WHERE REL.TARGET_OBJID = WBS_TASK.OBJID AND REL.SUB_OBJID = INFO.OBJID) AS REL_TASK_CNT
FROM PMS_PROTO_STOCK_INFO INFO
WHERE 1=1
<if test="search_carType != null and search_carType != ''">
AND INFO.CAR_OBJID = #{search_carType}
</if>
<if test="search_productType != null and search_productType !=''">
AND INFO.PROD_OBJID = #{search_productType}
</if>
<if test="partnerId != null and partnerId !=''">
AND PARTNER_ID = #{partnerId}
</if>
) 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_dept != null and !''.equals(search_dept)">
AND UPPER(DEPT_NAME) LIKE UPPER('%${search_dept}%')
</if>
<if test="search_writer != null and !''.equals(search_writer)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_partner != null and !''.equals(search_partner)">
AND UPPER(PARTNER_USER_NAME) LIKE UPPER('%${search_partner}%')
</if>
) INFO
WHERE 1=1
<if test="'excel' != actionType">
) 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>
</if>
</select>
<!-- 입고관리 갑지 목록 CNT -->
<select id="getProtoStockMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM(
SELECT INFO.*
FROM(
SELECT INFO.OBJID,
INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = INFO.OEM_OBJID) AS OEM_NAME,
INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_NAME,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
INFO.REGDATE,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
INFO.STATUS,
INFO.WRITER,
INFO.PARTNER_ID,
(SELECT USER_TYPE_NAME FROM USER_INFO WHERE USER_ID = INFO.PARTNER_ID) AS PARTNER_USER_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME,
(SELECT SUM(TOTAL_REQUIRED) FROM PMS_PROTO_STOCK_REL_PART_INFO WHERE TARGET_OBJID = INFO.OBJID) AS SUM_TOTAL_CNT,
(SELECT SUM(RECEIVE_COUNT) FROM PMS_PROTO_STOCK_REL_PART_INFO WHERE TARGET_OBJID = INFO.OBJID) AS SUM_STOCK_CNT,
(SELECT SUM(DELAY_RECEIVE_COUNT) FROM PMS_PROTO_STOCK_REL_PART_INFO WHERE TARGET_OBJID = INFO.OBJID) AS SUM_DELAY_CNT,
(SELECT COUNT(1) FROM PMS_PROTO_STOCK_REL_PART_INFO WHERE TARGET_OBJID = INFO.OBJID) SHAPE_CNT
FROM PMS_PROTO_STOCK_INFO INFO
WHERE 1=1
<if test="search_carType != null and search_carType != ''">
AND INFO.CAR_OBJID = #{search_carType}
</if>
<if test="search_productType != null and search_productType !=''">
AND INFO.PROD_OBJID = #{search_productType}
</if>
<if test="partnerId != null and partnerId !=''">
AND PARTNER_ID = #{partnerId}
</if>
ORDER BY REGDATE DESC
) 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_dept != null and !''.equals(search_dept)">
AND UPPER(DEPT_NAME) LIKE UPPER('%${search_dept}%')
</if>
<if test="search_writer != null and !''.equals(search_writer)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_partner != null and !''.equals(search_partner)">
AND UPPER(PARTNER_USER_NAME) LIKE UPPER('%${search_partner}%')
</if>
)WHERE 1=1
)WHERE 1=1
</select>
<!-- 입고관리 갑지 상세 내용을 가져온다. -->
<select id="getProtoStockBaseInfo" parameterType="map" resultType="map">
SELECT
INFO.OBJID,
INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = INFO.OEM_OBJID) AS OEM_NAME,
INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_CODE,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
INFO.REGDATE,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
INFO.STATUS,
INFO.WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME,
INFO.PARTNER_ID,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.PARTNER_ID) AS PARTNER_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.PARTNER_ID) AS PARTNER_DEPT_NAME
FROM PMS_PROTO_STOCK_INFO INFO
WHERE INFO.OBJID = #{objId}
ORDER BY REGDATE DESC
</select>
<!-- 입고관리 갑지의 중복여부를 확인한다. -->
<select id="checkDuplicateStockBaseInfo" parameterType="map" resultType="map">
SELECT COUNT(1) CNT FROM(
SELECT
INFO.OBJID,
INFO.OEM_OBJID,
INFO.CAR_OBJID,
INFO.PROD_GROUP_OBJID,
INFO.PROD_OBJID
FROM PMS_PROTO_STOCK_INFO INFO
WHERE INFO.OBJID != #{objId}
<if test="oemObjId != null and oemObjId !='' ">
AND INFO.OEM_OBJID = #{oemObjId}
</if>
<if test="carTypeObjId != null and carTypeObjId !='' ">
AND INFO.CAR_OBJID = #{carTypeObjId}
</if>
<if test="productGroupObjId != null and productGroupObjId != '' ">
AND INFO.PROD_GROUP_OBJID = #{productGroupObjId}
</if>
<if test="productObjId != null and productObjId != '' ">
AND PROD_OBJID = #{productObjId}
</if>
)
</select>
<!-- 시작품 검사 관리 갑지의 중복여부를 확인한다. -->
<select id="checkDuplicateTestBaseInfo" parameterType="map" resultType="map">
SELECT COUNT(1) CNT FROM(
SELECT
INFO.OBJID,
INFO.OEM_OBJID,
INFO.CAR_OBJID,
INFO.PROD_GROUP_OBJID,
INFO.PROD_OBJID
FROM PMS_PROTO_TEST_INFO INFO
WHERE INFO.OBJID != #{objId}
<if test="oemObjId != null and oemObjId !='' ">
AND INFO.OEM_OBJID = #{oemObjId}
</if>
<if test="carTypeObjId != null and carTypeObjId !='' ">
AND INFO.CAR_OBJID = #{carTypeObjId}
</if>
<if test="productGroupObjId != null and productGroupObjId != '' ">
AND INFO.PROD_GROUP_OBJID = #{productGroupObjId}
</if>
<if test="productObjId != null and productObjId != '' ">
AND PROD_OBJID = #{productObjId}
</if>
)
</select>
<!-- 시작품 개발일정 관리 갑지의 중복여부를 확인한다. -->
<select id="checkDuplicatePlanBaseInfo" parameterType="map" resultType="map">
SELECT COUNT(1) CNT FROM(
SELECT
INFO.OBJID,
INFO.OEM_OBJID,
INFO.CAR_OBJID,
INFO.PROD_GROUP_OBJID,
INFO.PROD_OBJID
FROM PMS_PROTO_TEST_INFO INFO
WHERE INFO.OBJID != #{objId}
<if test="oemObjId != null and oemObjId !='' ">
AND INFO.OEM_OBJID = #{oemObjId}
</if>
<if test="carTypeObjId != null and carTypeObjId !='' ">
AND INFO.CAR_OBJID = #{carTypeObjId}
</if>
<if test="productGroupObjId != null and productGroupObjId != '' ">
AND INFO.PROD_GROUP_OBJID = #{productGroupObjId}
</if>
<if test="productObjId != null and productObjId != '' ">
AND PROD_OBJID = #{productObjId}
</if>
)
</select>
<!-- 입고관리 갑지 정보를 저장한다. -->
<update id="saveStockBaseInfo" parameterType="map">
MERGE INTO PMS_PROTO_STOCK_INFO P USING DUAL ON (P.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET
P.OEM_OBJID = #{oemObjId}
,P.CAR_OBJID = #{carTypeObjId}
,P.PROD_GROUP_OBJID = #{productGroupObjId}
,P.PROD_OBJID = #{productObjId}
,P.PARTNER_ID = #{partnerId}
WHEN NOT MATCHED THEN
INSERT (
P.OBJID,
P.OEM_OBJID,
P.CAR_OBJID,
P.PROD_GROUP_OBJID,
P.PROD_OBJID,
P.REGDATE,
P.STATUS,
P.PARTNER_ID,
P.WRITER
)VALUES(
#{objId},
#{oemObjId},
#{carTypeObjId},
#{productGroupObjId},
#{productObjId},
SYSDATE,
#{status},
#{partnerId},
#{writer}
)
</update>
<!-- 시작품 검사 갑지 정보를 저장한다. -->
<update id="saveTestBaseInfo" parameterType="map">
MERGE INTO PMS_PROTO_TEST_INFO P USING DUAL ON (P.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET
P.OEM_OBJID = #{oemObjId}
,P.CAR_OBJID = #{carTypeObjId}
,P.PROD_GROUP_OBJID = #{productGroupObjId}
,P.PROD_OBJID = #{productObjId}
,P.PARTNER_ID = #{partnerId}
WHEN NOT MATCHED THEN
INSERT (
P.OBJID,
P.OEM_OBJID,
P.CAR_OBJID,
P.PROD_GROUP_OBJID,
P.PROD_OBJID,
P.REGDATE,
P.STATUS,
P.PARTNER_ID,
P.WRITER
)VALUES(
#{objId},
#{oemObjId},
#{carTypeObjId},
#{productGroupObjId},
#{productObjId},
SYSDATE,
#{status},
#{partnerId},
#{writer}
)
</update>
<!-- 시작품 개발일정 갑지 정보를 저장한다. -->
<update id="savePlanBaseInfo" parameterType="map">
MERGE INTO PMS_PROTO_PLAN_INFO P USING DUAL ON (P.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET
P.OEM_OBJID = #{oemObjId}
,P.CAR_OBJID = #{carTypeObjId}
,P.PROD_GROUP_OBJID = #{productGroupObjId}
,P.PROD_OBJID = #{productObjId}
,P.PARTNER_ID = #{partnerId}
WHEN NOT MATCHED THEN
INSERT (
P.OBJID,
P.OEM_OBJID,
P.CAR_OBJID,
P.PROD_GROUP_OBJID,
P.PROD_OBJID,
P.REGDATE,
P.STATUS,
P.PARTNER_ID,
P.WRITER
)VALUES(
#{objId},
#{oemObjId},
#{carTypeObjId},
#{productGroupObjId},
#{productObjId},
SYSDATE,
#{status},
#{partnerId},
#{writer}
)
</update>
<!-- 시작품 입고현황 갑지에 연결된 파트별 입고 내용 목록을 가져온다. -->
<select id="getStockConnectPartInfoList" parameterType="map" resultType="map">
SELECT
ROWNUM RNUM,
PART.*,
(SELECT OBJID FROM PART_INFO WHERE PART_NO = PART.PART_NO AND IS_START_DEV_PART = '0') AS PART_OBJID,
ROUND(((NVL(PART.RECEIVE_COUNT,0)/DECODE(NVL(PART.TOTAL_REQUIRED,1),0,1,NVL(PART.TOTAL_REQUIRED,1))))*100,1) AS STOCK_RATIO
FROM(
SELECT
PART.STOCK_OBJID AS TARGET_OBJID,
PART.PART_NO,
PART.PART_NAME,
PART.EO_NO,
PART.EO_ISSUE_DATE,
TO_CHAR(PART.EO_ISSUE_DATE,'YYYY-MM-DD') AS EO_ISSUE_DATE_TITLE,
PART.REV,
NVL2(STOCK_REL.OBJID,STOCK_REL.OBJID,ORA_HASH(DBMS_RANDOM.VALUE(1, 100000))) AS STOCK_REL_OBJID,
STOCK_REL.TOTAL_REQUIRED,
STOCK_REL.RECEIVE_COUNT,
STOCK_REL.DELAY_RECEIVE_COUNT,
STOCK_REL.WRITER,
STOCK_REL.REGDATE,
TO_CHAR(STOCK_REL.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE
FROM
(
SELECT
STOCK.OBJID AS STOCK_OBJID,
PART.PART_NO,
PART.PART_NAME,
PART.EO_NO,
PART.EO_ISSUE_DATE,
PART.REV
FROM
PMS_PROTO_STOCK_INFO STOCK,
PART_INFO PART
WHERE 1 = 1
AND PART.IS_START_DEV_PART = '0'
AND STOCK.OBJID = #{objId}
AND STOCK.OEM_OBJID = PART.OEM_OBJID
AND STOCK.CAR_OBJID = PART.CAR_OBJID
AND STOCK.PROD_GROUP_OBJID = PART.PRODUCT_GROUP_OBJID
AND STOCK.PROD_OBJID = PART.PRODUCT_OBJID
) PART,
PMS_PROTO_STOCK_REL_PART_INFO STOCK_REL
WHERE 1 = 1
AND PART.STOCK_OBJID = STOCK_REL.TARGET_OBJID(+)
AND PART.PART_NO = STOCK_REL.PART_NO(+)
ORDER BY REGDATE DESC
) PART
</select>
<!-- 시작품 검사 갑지에 연결된 파트별 입고 내용 목록을 가져온다. -->
<select id="getTestConnectPartInfoList" parameterType="map" resultType="map">
SELECT
ROWNUM RNUM,
PART_INFO.*
FROM(
SELECT
TEST_INFO.OBJID AS TEST_OBJID,
PART.PART_NO,
PART.PART_NAME,
PART.EO_NO,
PART.EO_ISSUE_DATE,
PART.REV,
(SELECT OBJID FROM PART_INFO WHERE PART_NO = PART.PART_NO AND IS_START_DEV_PART = '0') AS PART_OBJID,
(
SELECT
TEST_ROUND
FROM(
SELECT
ROW_NUMBER() OVER(PARTITION BY INFO.PART_NO ORDER BY INFO.REGDATE DESC) RNUM,
INFO.PART_NO,
INFO.TEST_ROUND,
INFO.REGDATE
FROM PMS_PROTO_TEST_RESULT_INFO INFO
WHERE UPPER(INFO.RESULT_TYPE) = 'WELD'
)WHERE RNUM = 1 AND PART_NO = PART.PART_NO
) AS WELD_CURRENT_ROUND,
(
SELECT
DECODE(TEST_RESULT,0,'OK','NG') AS TEST_RESULT
FROM(
SELECT
ROW_NUMBER() OVER(PARTITION BY INFO.PART_NO ORDER BY INFO.REGDATE DESC) RNUM,
INFO.PART_NO,
INFO.TEST_RESULT,
INFO.REGDATE
FROM PMS_PROTO_TEST_RESULT_INFO INFO
WHERE UPPER(INFO.RESULT_TYPE) = 'WELD'
)WHERE RNUM = 1 AND PART_NO = PART.PART_NO
) AS WELD_CURRENT_RESULT,
(
SELECT
TEST_ROUND
FROM(
SELECT
ROW_NUMBER() OVER(PARTITION BY INFO.PART_NO ORDER BY INFO.REGDATE DESC) RNUM,
INFO.PART_NO,
INFO.TEST_ROUND,
INFO.REGDATE
FROM PMS_PROTO_TEST_RESULT_INFO INFO
WHERE UPPER(INFO.RESULT_TYPE) = 'FRAME'
)WHERE RNUM = 1 AND PART_NO = PART.PART_NO
) AS FRAME_CURRENT_ROUND,
(
SELECT
SCORE
FROM(
SELECT
ROW_NUMBER() OVER(PARTITION BY INFO.PART_NO ORDER BY INFO.REGDATE DESC) RNUM,
INFO.PART_NO,
INFO.SCORE,
INFO.REGDATE
FROM PMS_PROTO_TEST_RESULT_INFO INFO
WHERE UPPER(INFO.RESULT_TYPE) = 'FRAME'
)WHERE RNUM = 1 AND PART_NO = PART.PART_NO
) AS FRAME_CURRENT_SCORE,
(SELECT COUNT(1) FROM PMS_PROTO_TEST_RESULT_INFO WHERE TARGET_OBJID = TEST_INFO.OBJID AND PART_NO = PART.PART_NO) HISTORY_CNT
FROM
PMS_PROTO_TEST_INFO TEST_INFO,
(
SELECT
PART.OEM_OBJID,
PART.CAR_OBJID,
PART.PRODUCT_GROUP_OBJID,
PART.PRODUCT_OBJID,
PART.PART_NO,
PART.PART_NAME,
PART.EO_NO,
PART.EO_ISSUE_DATE,
PART.REV,
PART.IS_START_DEV_PART,
(SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = PART.MATERIAL_TYPE_OBJID) AS MATERIAL_TYPE_NAME
FROM PART_INFO PART
WHERE PART.IS_START_DEV_PART = '0'
)PART
WHERE 1 = 1
AND PART.MATERIAL_TYPE_NAME = '제품'
AND TEST_INFO.OBJID = #{objId}
AND TEST_INFO.OEM_OBJID = PART.OEM_OBJID
AND TEST_INFO.CAR_OBJID = PART.CAR_OBJID
AND TEST_INFO.PROD_GROUP_OBJID = PART.PRODUCT_GROUP_OBJID
AND TEST_INFO.PROD_OBJID = PART.PRODUCT_OBJID
)PART_INFO
</select>
<!-- 시작품 개발일정 갑지에 연결된 파트별 개발일정 내용 목록을 가져온다. -->
<select id="getPlanConnectPartInfoList" parameterType="map" resultType="map">
SELECT
ROWNUM RNUM,
PART_INFO.*,
NVL2(PLAN_REL.OBJID,PLAN_REL.OBJID,ORA_HASH(DBMS_RANDOM.VALUE(1, 100000))) AS PLAN_REL_OBJID,
PLAN_REL.QUANTITY,
PLAN_REL.METHOD,
PLAN_REL.TARGET_OBJID,
TO_CHAR(PLAN_REL.PLAN_JIG_FROM_DATE_LOT1,'YYYY-MM-DD') AS PLAN_JIG_FROM_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_JIG_TO_DATE_LOT1,'YYYY-MM-DD') AS PLAN_JIG_TO_DATE_LOT1,
TO_CHAR(PLAN_REL.JIG_ACTUAL_DATE_LOT1,'YYYY-MM-DD') AS JIG_ACTUAL_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_MOLD_FROM_DATE_LOT1,'YYYY-MM-DD') AS PLAN_MOLD_FROM_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_MOLD_TO_DATE_LOT1,'YYYY-MM-DD') AS PLAN_MOLD_TO_DATE_LOT1,
TO_CHAR(PLAN_REL.MOLD_ACTUAL_DATE_LOT1,'YYYY-MM-DD') AS MOLD_ACTUAL_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_CRAFT_FROM_DATE_LOT1,'YYYY-MM-DD') AS PLAN_CRAFT_FROM_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_CRAFT_TO_DATE_LOT1,'YYYY-MM-DD') AS PLAN_CRAFT_TO_DATE_LOT1,
TO_CHAR(PLAN_REL.CRAFT_ACTUAL_DATE_LOT1,'YYYY-MM-DD') AS CRAFT_ACTUAL_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_TRY_OUT_FROM_DATE_LOT1,'YYYY-MM-DD') AS PLAN_TRY_OUT_FROM_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_TRY_OUT_TO_DATE_LOT1,'YYYY-MM-DD') AS PLAN_TRY_OUT_TO_DATE_LOT1,
TO_CHAR(PLAN_REL.TRY_OUT_ACTUAL_DATE_LOT1,'YYYY-MM-DD') AS TRY_OUT_ACTUAL_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_LASER_FROM_DATE_LOT1,'YYYY-MM-DD') AS PLAN_LASER_FROM_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_LASER_TO_DATE_LOT1,'YYYY-MM-DD') AS PLAN_LASER_TO_DATE_LOT1,
TO_CHAR(PLAN_REL.LASER_ACTUAL_DATE_LOT1,'YYYY-MM-DD') AS LASER_ACTUAL_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_JIG_TEST_FROM_DATE_LOT1,'YYYY-MM-DD') AS PLAN_JIG_TEST_FROM_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_JIG_TEST_TO_DATE_LOT1,'YYYY-MM-DD') AS PLAN_JIG_TEST_TO_DATE_LOT1,
TO_CHAR(PLAN_REL.JIG_TEST_ACTUAL_DATE_LOT1,'YYYY-MM-DD') AS JIG_TEST_ACTUAL_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_INIT_PROD_FROM_DATE_LOT1,'YYYY-MM-DD') AS PLAN_INIT_PROD_FROM_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_INIT_PROD_TO_DATE_LOT1,'YYYY-MM-DD') AS PLAN_INIT_PROD_TO_DATE_LOT1,
TO_CHAR(PLAN_REL.INIT_PROD_ACTUAL_DATE_LOT1,'YYYY-MM-DD') AS INIT_PROD_ACTUAL_DATE_LOT1,
TO_CHAR(PLAN_REL.PLAN_JIG_FROM_DATE_LOT2,'YYYY-MM-DD') AS PLAN_JIG_FROM_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_JIG_TO_DATE_LOT2,'YYYY-MM-DD') AS PLAN_JIG_TO_DATE_LOT2,
TO_CHAR(PLAN_REL.JIG_ACTUAL_DATE_LOT2,'YYYY-MM-DD') AS JIG_ACTUAL_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_MOLD_FROM_DATE_LOT2,'YYYY-MM-DD') AS PLAN_MOLD_FROM_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_MOLD_TO_DATE_LOT2,'YYYY-MM-DD') AS PLAN_MOLD_TO_DATE_LOT2,
TO_CHAR(PLAN_REL.MOLD_ACTUAL_DATE_LOT2,'YYYY-MM-DD') AS MOLD_ACTUAL_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_CRAFT_FROM_DATE_LOT2,'YYYY-MM-DD') AS PLAN_CRAFT_FROM_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_CRAFT_TO_DATE_LOT2,'YYYY-MM-DD') AS PLAN_CRAFT_TO_DATE_LOT2,
TO_CHAR(PLAN_REL.CRAFT_ACTUAL_DATE_LOT2,'YYYY-MM-DD') AS CRAFT_ACTUAL_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_TRY_OUT_FROM_DATE_LOT2,'YYYY-MM-DD') AS PLAN_TRY_OUT_FROM_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_TRY_OUT_TO_DATE_LOT2,'YYYY-MM-DD') AS PLAN_TRY_OUT_TO_DATE_LOT2,
TO_CHAR(PLAN_REL.TRY_OUT_ACTUAL_DATE_LOT2,'YYYY-MM-DD') AS TRY_OUT_ACTUAL_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_LASER_FROM_DATE_LOT2,'YYYY-MM-DD') AS PLAN_LASER_FROM_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_LASER_TO_DATE_LOT2,'YYYY-MM-DD') AS PLAN_LASER_TO_DATE_LOT2,
TO_CHAR(PLAN_REL.LASER_ACTUAL_DATE_LOT2,'YYYY-MM-DD') AS LASER_ACTUAL_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_JIG_TEST_FROM_DATE_LOT2,'YYYY-MM-DD') AS PLAN_JIG_TEST_FROM_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_JIG_TEST_TO_DATE_LOT2,'YYYY-MM-DD') AS PLAN_JIG_TEST_TO_DATE_LOT2,
TO_CHAR(PLAN_REL.JIG_TEST_ACTUAL_DATE_LOT2,'YYYY-MM-DD') AS JIG_TEST_ACTUAL_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_INIT_PROD_FROM_DATE_LOT2,'YYYY-MM-DD') AS PLAN_INIT_PROD_FROM_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_INIT_PROD_TO_DATE_LOT2,'YYYY-MM-DD') AS PLAN_INIT_PROD_TO_DATE_LOT2,
TO_CHAR(PLAN_REL.INIT_PROD_ACTUAL_DATE_LOT2,'YYYY-MM-DD') AS INIT_PROD_ACTUAL_DATE_LOT2,
TO_CHAR(PLAN_REL.PLAN_JIG_FROM_DATE_LOT3,'YYYY-MM-DD') AS PLAN_JIG_FROM_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_JIG_TO_DATE_LOT3,'YYYY-MM-DD') AS PLAN_JIG_TO_DATE_LOT3,
TO_CHAR(PLAN_REL.JIG_ACTUAL_DATE_LOT3,'YYYY-MM-DD') AS JIG_ACTUAL_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_MOLD_FROM_DATE_LOT3,'YYYY-MM-DD') AS PLAN_MOLD_FROM_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_MOLD_TO_DATE_LOT3,'YYYY-MM-DD') AS PLAN_MOLD_TO_DATE_LOT3,
TO_CHAR(PLAN_REL.MOLD_ACTUAL_DATE_LOT3,'YYYY-MM-DD') AS MOLD_ACTUAL_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_CRAFT_FROM_DATE_LOT3,'YYYY-MM-DD') AS PLAN_CRAFT_FROM_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_CRAFT_TO_DATE_LOT3,'YYYY-MM-DD') AS PLAN_CRAFT_TO_DATE_LOT3,
TO_CHAR(PLAN_REL.CRAFT_ACTUAL_DATE_LOT3,'YYYY-MM-DD') AS CRAFT_ACTUAL_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_TRY_OUT_FROM_DATE_LOT3,'YYYY-MM-DD') AS PLAN_TRY_OUT_FROM_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_TRY_OUT_TO_DATE_LOT3,'YYYY-MM-DD') AS PLAN_TRY_OUT_TO_DATE_LOT3,
TO_CHAR(PLAN_REL.TRY_OUT_ACTUAL_DATE_LOT3,'YYYY-MM-DD') AS TRY_OUT_ACTUAL_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_LASER_FROM_DATE_LOT3,'YYYY-MM-DD') AS PLAN_LASER_FROM_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_LASER_TO_DATE_LOT3,'YYYY-MM-DD') AS PLAN_LASER_TO_DATE_LOT3,
TO_CHAR(PLAN_REL.LASER_ACTUAL_DATE_LOT3,'YYYY-MM-DD') AS LASER_ACTUAL_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_JIG_TEST_FROM_DATE_LOT3,'YYYY-MM-DD') AS PLAN_JIG_TEST_FROM_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_JIG_TEST_TO_DATE_LOT3,'YYYY-MM-DD') AS PLAN_JIG_TEST_TO_DATE_LOT3,
TO_CHAR(PLAN_REL.JIG_TEST_ACTUAL_DATE_LOT3,'YYYY-MM-DD') AS JIG_TEST_ACTUAL_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_INIT_PROD_FROM_DATE_LOT3,'YYYY-MM-DD') AS PLAN_INIT_PROD_FROM_DATE_LOT3,
TO_CHAR(PLAN_REL.PLAN_INIT_PROD_TO_DATE_LOT3,'YYYY-MM-DD') AS PLAN_INIT_PROD_TO_DATE_LOT3,
TO_CHAR(PLAN_REL.INIT_PROD_ACTUAL_DATE_LOT3,'YYYY-MM-DD') AS INIT_PROD_ACTUAL_DATE_LOT3,
PLAN_REL.WRITER,
PLAN_REL.REGDATE,
TO_CHAR(PLAN_REL.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
<!-- LOT1 -->
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_JIG_FROM_DATE_LOT1 AND PLAN_REL.PLAN_JIG_TO_DATE_LOT1 AND PLAN_REL.JIG_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_JIG_FROM_DATE_LOT1 AND SYSDATE > PLAN_REL.PLAN_JIG_TO_DATE_LOT1 AND PLAN_REL.JIG_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_JIG_LOT1,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_MOLD_FROM_DATE_LOT1 AND PLAN_REL.PLAN_MOLD_TO_DATE_LOT1 AND PLAN_REL.MOLD_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_MOLD_FROM_DATE_LOT1 AND SYSDATE > PLAN_REL.PLAN_MOLD_TO_DATE_LOT1 AND PLAN_REL.MOLD_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_MOLD_LOT1,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_CRAFT_FROM_DATE_LOT1 AND PLAN_REL.PLAN_CRAFT_TO_DATE_LOT1 AND PLAN_REL.CRAFT_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_CRAFT_FROM_DATE_LOT1 AND SYSDATE > PLAN_REL.PLAN_CRAFT_TO_DATE_LOT1 AND PLAN_REL.CRAFT_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_CRAFT_LOT1,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_TRY_OUT_FROM_DATE_LOT1 AND PLAN_REL.PLAN_TRY_OUT_TO_DATE_LOT1 AND PLAN_REL.TRY_OUT_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_TRY_OUT_FROM_DATE_LOT1 AND SYSDATE > PLAN_REL.PLAN_TRY_OUT_TO_DATE_LOT1 AND PLAN_REL.TRY_OUT_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_TRY_OUT_LOT1,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_LASER_FROM_DATE_LOT1 AND PLAN_REL.PLAN_LASER_TO_DATE_LOT1 AND PLAN_REL.LASER_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_LASER_FROM_DATE_LOT1 AND SYSDATE > PLAN_REL.PLAN_LASER_TO_DATE_LOT1 AND PLAN_REL.LASER_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_LASER_LOT1,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_JIG_TEST_FROM_DATE_LOT1 AND PLAN_REL.PLAN_JIG_TEST_TO_DATE_LOT1 AND PLAN_REL.JIG_TEST_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_JIG_TEST_FROM_DATE_LOT1 AND SYSDATE > PLAN_REL.PLAN_JIG_TEST_TO_DATE_LOT1 AND PLAN_REL.JIG_TEST_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_JIG_TEST_LOT1,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_INIT_PROD_FROM_DATE_LOT1 AND PLAN_REL.PLAN_INIT_PROD_TO_DATE_LOT1 AND PLAN_REL.INIT_PROD_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_INIT_PROD_FROM_DATE_LOT1 AND SYSDATE > PLAN_REL.PLAN_INIT_PROD_TO_DATE_LOT1 AND PLAN_REL.INIT_PROD_ACTUAL_DATE_LOT1 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_INIT_PROD_LOT1,
<!-- LOT2 -->
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_JIG_FROM_DATE_LOT2 AND PLAN_REL.PLAN_JIG_TO_DATE_LOT2 AND PLAN_REL.JIG_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_JIG_FROM_DATE_LOT2 AND SYSDATE > PLAN_REL.PLAN_JIG_TO_DATE_LOT2 AND PLAN_REL.JIG_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_JIG_LOT2,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_MOLD_FROM_DATE_LOT2 AND PLAN_REL.PLAN_MOLD_TO_DATE_LOT2 AND PLAN_REL.MOLD_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_MOLD_FROM_DATE_LOT2 AND SYSDATE > PLAN_REL.PLAN_MOLD_TO_DATE_LOT2 AND PLAN_REL.MOLD_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_MOLD_LOT2,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_CRAFT_FROM_DATE_LOT2 AND PLAN_REL.PLAN_CRAFT_TO_DATE_LOT2 AND PLAN_REL.CRAFT_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_CRAFT_FROM_DATE_LOT2 AND SYSDATE > PLAN_REL.PLAN_CRAFT_TO_DATE_LOT2 AND PLAN_REL.CRAFT_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_CRAFT_LOT2,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_TRY_OUT_FROM_DATE_LOT2 AND PLAN_REL.PLAN_TRY_OUT_TO_DATE_LOT2 AND PLAN_REL.TRY_OUT_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_TRY_OUT_FROM_DATE_LOT2 AND SYSDATE > PLAN_REL.PLAN_TRY_OUT_TO_DATE_LOT2 AND PLAN_REL.TRY_OUT_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_TRY_OUT_LOT2,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_LASER_FROM_DATE_LOT2 AND PLAN_REL.PLAN_LASER_TO_DATE_LOT2 AND PLAN_REL.LASER_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_LASER_FROM_DATE_LOT2 AND SYSDATE > PLAN_REL.PLAN_LASER_TO_DATE_LOT2 AND PLAN_REL.LASER_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_LASER_LOT2,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_JIG_TEST_FROM_DATE_LOT2 AND PLAN_REL.PLAN_JIG_TEST_TO_DATE_LOT2 AND PLAN_REL.JIG_TEST_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_JIG_TEST_FROM_DATE_LOT2 AND SYSDATE > PLAN_REL.PLAN_JIG_TEST_TO_DATE_LOT2 AND PLAN_REL.JIG_TEST_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_JIG_TEST_LOT2,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_INIT_PROD_FROM_DATE_LOT2 AND PLAN_REL.PLAN_INIT_PROD_TO_DATE_LOT2 AND PLAN_REL.INIT_PROD_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_INIT_PROD_FROM_DATE_LOT2 AND SYSDATE > PLAN_REL.PLAN_INIT_PROD_TO_DATE_LOT2 AND PLAN_REL.INIT_PROD_ACTUAL_DATE_LOT2 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_INIT_PROD_LOT2,
<!-- LOT3 -->
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_JIG_FROM_DATE_LOT3 AND PLAN_REL.PLAN_JIG_TO_DATE_LOT3 AND PLAN_REL.JIG_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_JIG_FROM_DATE_LOT3 AND SYSDATE > PLAN_REL.PLAN_JIG_TO_DATE_LOT3 AND PLAN_REL.JIG_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_JIG_LOT3,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_MOLD_FROM_DATE_LOT3 AND PLAN_REL.PLAN_MOLD_TO_DATE_LOT3 AND PLAN_REL.MOLD_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_MOLD_FROM_DATE_LOT3 AND SYSDATE > PLAN_REL.PLAN_MOLD_TO_DATE_LOT3 AND PLAN_REL.MOLD_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_MOLD_LOT3,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_CRAFT_FROM_DATE_LOT3 AND PLAN_REL.PLAN_CRAFT_TO_DATE_LOT3 AND PLAN_REL.CRAFT_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_CRAFT_FROM_DATE_LOT3 AND SYSDATE > PLAN_REL.PLAN_CRAFT_TO_DATE_LOT3 AND PLAN_REL.CRAFT_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_CRAFT_LOT3,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_TRY_OUT_FROM_DATE_LOT3 AND PLAN_REL.PLAN_TRY_OUT_TO_DATE_LOT3 AND PLAN_REL.TRY_OUT_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_TRY_OUT_FROM_DATE_LOT3 AND SYSDATE > PLAN_REL.PLAN_TRY_OUT_TO_DATE_LOT3 AND PLAN_REL.TRY_OUT_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_TRY_OUT_LOT3,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_LASER_FROM_DATE_LOT3 AND PLAN_REL.PLAN_LASER_TO_DATE_LOT3 AND PLAN_REL.LASER_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_LASER_FROM_DATE_LOT3 AND SYSDATE > PLAN_REL.PLAN_LASER_TO_DATE_LOT3 AND PLAN_REL.LASER_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_LASER_LOT3,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_JIG_TEST_FROM_DATE_LOT3 AND PLAN_REL.PLAN_JIG_TEST_TO_DATE_LOT3 AND PLAN_REL.JIG_TEST_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_JIG_TEST_FROM_DATE_LOT3 AND SYSDATE > PLAN_REL.PLAN_JIG_TEST_TO_DATE_LOT3 AND PLAN_REL.JIG_TEST_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_JIG_TEST_LOT3,
CASE
WHEN SYSDATE BETWEEN PLAN_REL.PLAN_INIT_PROD_FROM_DATE_LOT3 AND PLAN_REL.PLAN_INIT_PROD_TO_DATE_LOT3 AND PLAN_REL.INIT_PROD_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
WHEN SYSDATE > PLAN_REL.PLAN_INIT_PROD_FROM_DATE_LOT3 AND SYSDATE > PLAN_REL.PLAN_INIT_PROD_TO_DATE_LOT3 AND PLAN_REL.INIT_PROD_ACTUAL_DATE_LOT3 IS NULL
THEN 'warning'
ELSE ''
END AS BLINK_ACTUAL_INIT_PROD_LOT3
FROM(
SELECT
PLAN_INFO.OBJID AS PLAN_OBJID,
PART.OBJID AS PART_OBJID,
PART.PART_NO,
PART.PART_NAME,
PART.EO_NO,
PART.EO_ISSUE_DATE,
PART.REV,
(SELECT MATERIAL_NAME FROM MATERIAL_MNG WHERE OBJID = PART.MATERIAL_OBJID) AS MATERIAL_NAME,
PART.THICKNESS
FROM
PMS_PROTO_PLAN_INFO PLAN_INFO,
PART_INFO PART
WHERE 1 = 1
AND PART.IS_START_DEV_PART = '0'
AND PLAN_INFO.OBJID = #{objId}
AND PLAN_INFO.OEM_OBJID = PART.OEM_OBJID
AND PLAN_INFO.CAR_OBJID = PART.CAR_OBJID
AND PLAN_INFO.PROD_GROUP_OBJID = PART.PRODUCT_GROUP_OBJID
AND PLAN_INFO.PROD_OBJID = PART.PRODUCT_OBJID
)PART_INFO,
PMS_PROTO_PLAN_REL_PART_INFO PLAN_REL
WHERE 1 = 1
AND PART_INFO.PLAN_OBJID = PLAN_REL.TARGET_OBJID(+)
AND PART_INFO.PART_NO = PLAN_REL.PART_NO(+)
ORDER BY REGDATE DESC
</select>
<!-- 시작품 개발일정 파트 정보를 저장한다. -->
<update id="saveProtoPlanPartInfo" parameterType="map">
MERGE INTO PMS_PROTO_PLAN_REL_PART_INFO P USING DUAL ON (P.OBJID = #{objId} AND P.TARGET_OBJID= #{targetObjId} AND P.PART_NO = #{partNo})
WHEN MATCHED THEN
UPDATE
SET
P.QUANTITY =#{quantity},
P.METHOD =#{method},
P.PLAN_JIG_FROM_DATE_LOT1 =#{planFromDate_jig_lot1},
P.PLAN_JIG_TO_DATE_LOT1 =#{planToDate_jig_lot1},
P.JIG_ACTUAL_DATE_LOT1 =#{actualDate_jig_lot1},
P.PLAN_MOLD_FROM_DATE_LOT1 =#{planFromDate_mold_lot1},
P.PLAN_MOLD_TO_DATE_LOT1 =#{planToDate_mold_lot1},
P.MOLD_ACTUAL_DATE_LOT1 =#{actualDate_mold_lot1},
P.PLAN_CRAFT_FROM_DATE_LOT1 =#{planFromDate_craft_lot1},
P.PLAN_CRAFT_TO_DATE_LOT1 =#{planToDate_craft_lot1},
P.CRAFT_ACTUAL_DATE_LOT1 =#{actualDate_craft_lot1},
P.PLAN_TRY_OUT_FROM_DATE_LOT1 =#{planFromDate_try_out_lot1},
P.PLAN_TRY_OUT_TO_DATE_LOT1 =#{planToDate_try_out_lot1},
P.TRY_OUT_ACTUAL_DATE_LOT1 =#{actualDate_try_out_lot1},
P.PLAN_LASER_FROM_DATE_LOT1 =#{planFromDate_laser_lot1},
P.PLAN_LASER_TO_DATE_LOT1 =#{planToDate_laser_lot1},
P.LASER_ACTUAL_DATE_LOT1 =#{actualDate_laser_lot1},
P.PLAN_JIG_TEST_FROM_DATE_LOT1 =#{planFromDate_jig_test_lot1},
P.PLAN_JIG_TEST_TO_DATE_LOT1 =#{planToDate_jig_test_lot1},
P.JIG_TEST_ACTUAL_DATE_LOT1 =#{actualDate_jig_test_lot1},
P.PLAN_INIT_PROD_FROM_DATE_LOT1 =#{planFromDate_init_prod_lot1},
P.PLAN_INIT_PROD_TO_DATE_LOT1 =#{planToDate_init_prod_lot1},
P.INIT_PROD_ACTUAL_DATE_LOT1 =#{actualDate_init_prod_lot1},
P.PLAN_JIG_FROM_DATE_LOT2 =#{planFromDate_jig_lot2},
P.PLAN_JIG_TO_DATE_LOT2 =#{planToDate_jig_lot2},
P.JIG_ACTUAL_DATE_LOT2 =#{actualDate_jig_lot2},
P.PLAN_MOLD_FROM_DATE_LOT2 =#{planFromDate_mold_lot2},
P.PLAN_MOLD_TO_DATE_LOT2 =#{planToDate_mold_lot2},
P.MOLD_ACTUAL_DATE_LOT2 =#{actualDate_mold_lot2},
P.PLAN_CRAFT_FROM_DATE_LOT2 =#{planFromDate_craft_lot2},
P.PLAN_CRAFT_TO_DATE_LOT2 =#{planToDate_craft_lot2},
P.CRAFT_ACTUAL_DATE_LOT2 =#{actualDate_craft_lot2},
P.PLAN_TRY_OUT_FROM_DATE_LOT2 =#{planFromDate_try_out_lot2},
P.PLAN_TRY_OUT_TO_DATE_LOT2 =#{planToDate_try_out_lot2},
P.TRY_OUT_ACTUAL_DATE_LOT2 =#{actualDate_try_out_lot2},
P.PLAN_LASER_FROM_DATE_LOT2 =#{planFromDate_laser_lot2},
P.PLAN_LASER_TO_DATE_LOT2 =#{planToDate_laser_lot2},
P.LASER_ACTUAL_DATE_LOT2 =#{actualDate_laser_lot2},
P.PLAN_JIG_TEST_FROM_DATE_LOT2 =#{planFromDate_jig_test_lot2},
P.PLAN_JIG_TEST_TO_DATE_LOT2 =#{planToDate_jig_test_lot2},
P.JIG_TEST_ACTUAL_DATE_LOT2 =#{actualDate_jig_test_lot2},
P.PLAN_INIT_PROD_FROM_DATE_LOT2 =#{planFromDate_init_prod_lot2},
P.PLAN_INIT_PROD_TO_DATE_LOT2 =#{planToDate_init_prod_lot2},
P.INIT_PROD_ACTUAL_DATE_LOT2 =#{actualDate_init_prod_lot2},
P.PLAN_JIG_FROM_DATE_LOT3 =#{planFromDate_jig_lot3},
P.PLAN_JIG_TO_DATE_LOT3 =#{planToDate_jig_lot3},
P.JIG_ACTUAL_DATE_LOT3 =#{actualDate_jig_lot3},
P.PLAN_MOLD_FROM_DATE_LOT3 =#{planFromDate_mold_lot3},
P.PLAN_MOLD_TO_DATE_LOT3 =#{planToDate_mold_lot3},
P.MOLD_ACTUAL_DATE_LOT3 =#{actualDate_mold_lot3},
P.PLAN_CRAFT_FROM_DATE_LOT3 =#{planFromDate_craft_lot3},
P.PLAN_CRAFT_TO_DATE_LOT3 =#{planToDate_craft_lot3},
P.CRAFT_ACTUAL_DATE_LOT3 =#{actualDate_craft_lot3},
P.PLAN_TRY_OUT_FROM_DATE_LOT3 =#{planFromDate_try_out_lot3},
P.PLAN_TRY_OUT_TO_DATE_LOT3 =#{planToDate_try_out_lot3},
P.TRY_OUT_ACTUAL_DATE_LOT3 =#{actualDate_try_out_lot3},
P.PLAN_LASER_FROM_DATE_LOT3 =#{planFromDate_laser_lot3},
P.PLAN_LASER_TO_DATE_LOT3 =#{planToDate_laser_lot3},
P.LASER_ACTUAL_DATE_LOT3 =#{actualDate_laser_lot3},
P.PLAN_JIG_TEST_FROM_DATE_LOT3 =#{planFromDate_jig_test_lot3},
P.PLAN_JIG_TEST_TO_DATE_LOT3 =#{planToDate_jig_test_lot3},
P.JIG_TEST_ACTUAL_DATE_LOT3 =#{actualDate_jig_test_lot3},
P.PLAN_INIT_PROD_FROM_DATE_LOT3 =#{planFromDate_init_prod_lot3},
P.PLAN_INIT_PROD_TO_DATE_LOT3 =#{planToDate_init_prod_lot3},
P.INIT_PROD_ACTUAL_DATE_LOT3 =#{actualDate_init_prod_lot3}
WHEN NOT MATCHED THEN
INSERT (
P.OBJID,
P.TARGET_OBJID,
P.PART_NO,
P.QUANTITY,
P.METHOD,
P.PLAN_JIG_FROM_DATE_LOT1,
P.PLAN_JIG_TO_DATE_LOT1,
P.JIG_ACTUAL_DATE_LOT1,
P.PLAN_MOLD_FROM_DATE_LOT1,
P.PLAN_MOLD_TO_DATE_LOT1,
P.MOLD_ACTUAL_DATE_LOT1,
P.PLAN_CRAFT_FROM_DATE_LOT1,
P.PLAN_CRAFT_TO_DATE_LOT1,
P.CRAFT_ACTUAL_DATE_LOT1,
P.PLAN_TRY_OUT_FROM_DATE_LOT1,
P.PLAN_TRY_OUT_TO_DATE_LOT1,
P.TRY_OUT_ACTUAL_DATE_LOT1,
P.PLAN_LASER_FROM_DATE_LOT1,
P.PLAN_LASER_TO_DATE_LOT1,
P.LASER_ACTUAL_DATE_LOT1,
P.PLAN_JIG_TEST_FROM_DATE_LOT1,
P.PLAN_JIG_TEST_TO_DATE_LOT1,
P.JIG_TEST_ACTUAL_DATE_LOT1,
P.PLAN_INIT_PROD_FROM_DATE_LOT1,
P.PLAN_INIT_PROD_TO_DATE_LOT1,
P.INIT_PROD_ACTUAL_DATE_LOT1,
P.PLAN_JIG_FROM_DATE_LOT2,
P.PLAN_JIG_TO_DATE_LOT2,
P.JIG_ACTUAL_DATE_LOT2,
P.PLAN_MOLD_FROM_DATE_LOT2,
P.PLAN_MOLD_TO_DATE_LOT2,
P.MOLD_ACTUAL_DATE_LOT2,
P.PLAN_CRAFT_FROM_DATE_LOT2,
P.PLAN_CRAFT_TO_DATE_LOT2,
P.CRAFT_ACTUAL_DATE_LOT2,
P.PLAN_TRY_OUT_FROM_DATE_LOT2,
P.PLAN_TRY_OUT_TO_DATE_LOT2,
P.TRY_OUT_ACTUAL_DATE_LOT2,
P.PLAN_LASER_FROM_DATE_LOT2,
P.PLAN_LASER_TO_DATE_LOT2,
P.LASER_ACTUAL_DATE_LOT2,
P.PLAN_JIG_TEST_FROM_DATE_LOT2,
P.PLAN_JIG_TEST_TO_DATE_LOT2,
P.JIG_TEST_ACTUAL_DATE_LOT2,
P.PLAN_INIT_PROD_FROM_DATE_LOT2,
P.PLAN_INIT_PROD_TO_DATE_LOT2,
P.INIT_PROD_ACTUAL_DATE_LOT2,
P.PLAN_JIG_FROM_DATE_LOT3,
P.PLAN_JIG_TO_DATE_LOT3,
P.JIG_ACTUAL_DATE_LOT3,
P.PLAN_MOLD_FROM_DATE_LOT3,
P.PLAN_MOLD_TO_DATE_LOT3,
P.MOLD_ACTUAL_DATE_LOT3,
P.PLAN_CRAFT_FROM_DATE_LOT3,
P.PLAN_CRAFT_TO_DATE_LOT3,
P.CRAFT_ACTUAL_DATE_LOT3,
P.PLAN_TRY_OUT_FROM_DATE_LOT3,
P.PLAN_TRY_OUT_TO_DATE_LOT3,
P.TRY_OUT_ACTUAL_DATE_LOT3,
P.PLAN_LASER_FROM_DATE_LOT3,
P.PLAN_LASER_TO_DATE_LOT3,
P.LASER_ACTUAL_DATE_LOT3,
P.PLAN_JIG_TEST_FROM_DATE_LOT3,
P.PLAN_JIG_TEST_TO_DATE_LOT3,
P.JIG_TEST_ACTUAL_DATE_LOT3,
P.PLAN_INIT_PROD_FROM_DATE_LOT3,
P.PLAN_INIT_PROD_TO_DATE_LOT3,
P.INIT_PROD_ACTUAL_DATE_LOT3,
P.WRITER,
P.REGDATE
)VALUES(
#{objId},
#{targetObjId},
#{partNo},
#{quantity},
#{method},
#{planFromDate_jig_lot1},
#{planToDate_jig_lot1},
#{actualDate_jig_lot1},
#{planFromDate_mold_lot1},
#{planToDate_mold_lot1},
#{actualDate_mold_lot1},
#{planFromDate_craft_lot1},
#{planToDate_craft_lot1},
#{actualDate_craft_lot1},
#{planFromDate_try_out_lot1},
#{planToDate_try_out_lot1},
#{actualDate_try_out_lot1},
#{planFromDate_laser_lot1},
#{planToDate_laser_lot1},
#{actualDate_laser_lot1},
#{planFromDate_jig_test_lot1},
#{planToDate_jig_test_lot1},
#{actualDate_jig_test_lot1},
#{planFromDate_init_prod_lot1},
#{planToDate_init_prod_lot1},
#{actualDate_init_prod_lot1},
#{planFromDate_jig_lot2},
#{planToDate_jig_lot2},
#{actualDate_jig_lot2},
#{planFromDate_mold_lot2},
#{planToDate_mold_lot2},
#{actualDate_mold_lot2},
#{planFromDate_craft_lot2},
#{planToDate_craft_lot2},
#{actualDate_craft_lot2},
#{planFromDate_try_out_lot2},
#{planToDate_try_out_lot2},
#{actualDate_try_out_lot2},
#{planFromDate_laser_lot2},
#{planToDate_laser_lot2},
#{actualDate_laser_lot2},
#{planFromDate_jig_test_lot2},
#{planToDate_jig_test_lot2},
#{actualDate_jig_test_lot2},
#{planFromDate_init_prod_lot2},
#{planToDate_init_prod_lot2},
#{actualDate_init_prod_lot2},
#{planFromDate_jig_lot3},
#{planToDate_jig_lot3},
#{actualDate_jig_lot3},
#{planFromDate_mold_lot3},
#{planToDate_mold_lot3},
#{actualDate_mold_lot3},
#{planFromDate_craft_lot3},
#{planToDate_craft_lot3},
#{actualDate_craft_lot3},
#{planFromDate_try_out_lot3},
#{planToDate_try_out_lot3},
#{actualDate_try_out_lot3},
#{planFromDate_laser_lot3},
#{planToDate_laser_lot3},
#{actualDate_laser_lot3},
#{planFromDate_jig_test_lot3},
#{planToDate_jig_test_lot3},
#{actualDate_jig_test_lot3},
#{planFromDate_init_prod_lot3},
#{planToDate_init_prod_lot3},
#{actualDate_init_prod_lot3},
#{writer},
SYSDATE
)
</update>
<!-- 입고관리 파트 정보를 저장한다. -->
<update id="saveProtoStockPartInfo" parameterType="map">
MERGE INTO PMS_PROTO_STOCK_REL_PART_INFO P USING DUAL ON (P.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET
P.TOTAL_REQUIRED = #{totalRequired},
P.RECEIVE_COUNT = #{receiveCount},
P.DELAY_RECEIVE_COUNT = #{delayReceiveCount}
WHEN NOT MATCHED THEN
INSERT (
P.OBJID,
P.TARGET_OBJID,
P.PART_NO,
P.TOTAL_REQUIRED,
P.RECEIVE_COUNT,
P.DELAY_RECEIVE_COUNT,
P.WRITER,
P.REGDATE
)VALUES(
#{objId},
#{targetObjId},
#{partNo},
#{totalRequired},
#{receiveCount},
#{delayReceiveCount},
#{writer},
SYSDATE
)
</update>
<!-- 시작품 검사 결과를 저장한다.. -->
<update id="saveProtoTestResult" parameterType="map">
MERGE INTO PMS_PROTO_TEST_RESULT_INFO P USING DUAL ON (P.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET
P.TEST_ROUND = #{round},
P.TEST_RESULT = #{result},
P.SCORE = #{score},
P.RESULT_TYPE = #{resultType}
WHEN NOT MATCHED THEN
INSERT(
P.OBJID,
P.TARGET_OBJID,
P.PART_NO,
P.TEST_ROUND,
P.SCORE,
P.TEST_RESULT,
P.RESULT_TYPE,
P.WRITER,
P.REGDATE
)VALUES(
#{objId},
#{targetObjId},
#{partNo},
#{round},
#{score},
#{result},
#{resultType},
#{writer},
SYSDATE
)
</update>
<!-- 시작품 검사 결과 목록을 가져온다. -->
<select id="getTestResultHistory" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER (ORDER BY REGDATE DESC) RNUM,
INFO.OBJID,
INFO.TARGET_OBJID,
INFO.PART_NO,
INFO.TEST_ROUND,
INFO.TEST_RESULT,
CASE
WHEN UPPER(INFO.RESULT_TYPE) = 'FRAME'
THEN TO_CHAR(INFO.SCORE)
WHEN UPPER(INFO.RESULT_TYPE) = 'WELD'
THEN DECODE(INFO.TEST_RESULT,0,'OK',1,'NG')
ELSE ''
END AS TEST_RESULT_TITLE,
INFO.SCORE,
INFO.WRITER,
INFO.REGDATE,
INFO.RESULT_TYPE,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = INFO.OBJID AND DOC_TYPE='PROTO_RESULT_ATTACH' AND UPPER(STATUS) = 'ACTIVE') AS START_FILE_CNT
FROM PMS_PROTO_TEST_RESULT_INFO INFO
WHERE 1=1
AND INFO.TARGET_OBJID = #{targetObjId}
AND INFO.PART_NO = #{partNo}
</select>
<!-- 시작품 검사 결과 단건을 가져온다. -->
<select id="getTestResultHistoryInfo" parameterType="map" resultType="map">
SELECT
INFO.OBJID,
INFO.TARGET_OBJID,
INFO.PART_NO,
INFO.TEST_ROUND,
INFO.TEST_RESULT,
DECODE(INFO.TEST_RESULT,'0','OK','1','NG') AS TEST_RESULT_TITLE,
INFO.SCORE,
INFO.WRITER,
INFO.REGDATE,
INFO.RESULT_TYPE,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE
FROM PMS_PROTO_TEST_RESULT_INFO INFO
WHERE INFO.OBJID = #{objId}
</select>
<!-- 시작품 검사관리 갑지 목록을 가져온다. -->
<select id="getProtoTestMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM(
</if>
SELECT INFO.*, ROW_NUMBER () OVER (ORDER BY REGDATE DESC) AS RNUM
FROM (
SELECT INFO.*
FROM(
SELECT
INFO.OBJID,
INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = INFO.OEM_OBJID) AS OEM_NAME,
INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_CODE,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
INFO.REGDATE,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
INFO.STATUS,
INFO.WRITER,
INFO.PARTNER_ID,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME,
(SELECT COUNT(1) FROM (SELECT PART.OEM_OBJID, PART.CAR_OBJID,PART.PRODUCT_GROUP_OBJID,PART.PRODUCT_OBJID,PART.PART_NO, PART.IS_START_DEV_PART,(SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = PART.MATERIAL_TYPE_OBJID) AS MATERIAL_TYPE_NAME FROM PART_INFO PART)PART WHERE 1=1 AND PART.MATERIAL_TYPE_NAME = '제품' AND PART.IS_START_DEV_PART = '0' AND PART.OEM_OBJID = INFO.OEM_OBJID AND PART.CAR_OBJID = INFO.CAR_OBJID AND PART.PRODUCT_GROUP_OBJID = INFO.PROD_GROUP_OBJID AND PART.PRODUCT_OBJID = INFO.PROD_OBJID) AS PART_CNT,
(SELECT COUNT(WBS_TASK.OBJID) AS TASK_CNT FROM PMS_WBS_TASK WBS_TASK,PMS_REL_WBS_TASK_FNC_TASK REL WHERE REL.TARGET_OBJID = WBS_TASK.OBJID AND REL.SUB_OBJID = INFO.OBJID) AS REL_TASK_CNT
FROM PMS_PROTO_TEST_INFO INFO
WHERE 1=1
<if test="search_carType != null and search_carType != ''">
AND INFO.CAR_OBJID = #{search_carType}
</if>
<if test="search_productType != null and search_productType !=''">
AND INFO.PROD_OBJID = #{search_productType}
</if>
<if test="partnerId != null and partnerId !=''">
AND PARTNER_ID = #{partnerId}
</if>
) 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_writer != null and search_writer !=''">
AND USER_NAME IN (SELECT USER_NAME FROM USER_INFO WHERE UPPER(USER_NAME) LIKE UPPER('%${search_writer}%'))
</if>
<if test="search_dept != null and !''.equals(search_dept)">
AND UPPER(DEPT_NAME) LIKE UPPER('%${search_dept}%')
</if>
<if test="search_writer != null and !''.equals(search_writer)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
) INFO
WHERE 1=1
<if test="'excel' != actionType">
)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>
</if>
</select>
<!-- 시작품 검사관리 갑지 목록CNT -->
<select id="getProtoTestMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM(
SELECT
INFO.OBJID,
INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = INFO.OEM_OBJID) AS OEM_NAME,
INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_NAME,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
INFO.REGDATE,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
INFO.STATUS,
INFO.WRITER,
INFO.PARTNER_ID,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME,
(SELECT COUNT(1) FROM (SELECT PART.OEM_OBJID, PART.CAR_OBJID,PART.PRODUCT_GROUP_OBJID,PART.PRODUCT_OBJID,PART.PART_NO, PART.IS_START_DEV_PART,(SELECT MATERIAL_TYPE_NAME FROM MATERIAL_TYPE_MNG WHERE OBJID = PART.MATERIAL_TYPE_OBJID) AS MATERIAL_TYPE_NAME FROM PART_INFO PART)PART WHERE 1=1 AND PART.MATERIAL_TYPE_NAME = '제품' AND PART.IS_START_DEV_PART = '0' AND PART.OEM_OBJID = INFO.OEM_OBJID AND PART.CAR_OBJID = INFO.CAR_OBJID AND PART.PRODUCT_GROUP_OBJID = INFO.PROD_GROUP_OBJID AND PART.PRODUCT_OBJID = INFO.PROD_OBJID) AS PART_CNT
FROM PMS_PROTO_TEST_INFO INFO
WHERE 1=1
<if test="search_carType != null and search_carType != ''">
AND INFO.CAR_OBJID = #{search_carType}
</if>
<if test="search_productType != null and search_productType !=''">
AND INFO.PROD_OBJID = #{search_productType}
</if>
<if test="partnerId != null and partnerId !=''">
AND PARTNER_ID = #{partnerId}
</if>
) 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_writer != null and search_writer !=''">
AND USER_NAME IN (SELECT USER_NAME FROM USER_INFO WHERE UPPER(USER_NAME) LIKE UPPER('%${search_writer}%'))
</if>
<if test="search_dept != null and !''.equals(search_dept)">
AND UPPER(DEPT_NAME) LIKE UPPER('%${search_dept}%')
</if>
<if test="search_writer != null and !''.equals(search_writer)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
) INFO
WHERE 1=1
</select>
<!-- 시작품 개발일정 갑지 목록을 가져온다. -->
<select id="getProtoPlanMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT INFO.* , ROW_NUMBER() OVER (ORDER BY REGDATE DESC) RNUM
FROM (
SELECT INFO.*
FROM (
SELECT INFO.OBJID,
INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = INFO.OEM_OBJID) AS OEM_NAME,
INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_CODE,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
INFO.REGDATE,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
INFO.STATUS,
INFO.WRITER,
INFO.PARTNER_ID,
(SELECT USER_TYPE_NAME FROM USER_INFO WHERE USER_ID = INFO.PARTNER_ID) AS PARTNER_USER_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME,
(SELECT COUNT(1) FROM PMS_PROTO_PLAN_REL_PART_INFO WHERE TARGET_OBJID = INFO.OBJID) SHAPE_CNT,
(SELECT COUNT(WBS_TASK.OBJID) AS TASK_CNT FROM PMS_WBS_TASK WBS_TASK,PMS_REL_WBS_TASK_FNC_TASK REL WHERE REL.TARGET_OBJID = WBS_TASK.OBJID AND REL.SUB_OBJID = INFO.OBJID) AS REL_TASK_CNT
FROM PMS_PROTO_PLAN_INFO INFO
)INFO WHERE 1=1
<if test="search_carType != null and search_carType != ''">
AND CAR_OBJID = #{search_carType}
</if>
<if test="search_productType != null and search_productType !=''">
AND PROD_OBJID = #{search_productType}
</if>
<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_partner != null and !''.equals(search_partner)">
AND UPPER(PARTNER_USER_NAME) LIKE UPPER('%${search_partner}%')
</if>
<if test="search_writer != null and !''.equals(search_writer)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
)INFO
<if test="'excel' != actionType">
) 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>
</if>
</select>
<!-- 시작품 개발일정 갑지 목록을 가져온다. -->
<select id="getProtoPlanMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM(
SELECT INFO.*
FROM (
SELECT INFO.OBJID,
INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = INFO.OEM_OBJID) AS OEM_NAME,
INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_NAME,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
INFO.REGDATE,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
INFO.STATUS,
INFO.WRITER,
INFO.PARTNER_ID,
(SELECT USER_TYPE_NAME FROM USER_INFO WHERE USER_ID = INFO.PARTNER_ID) AS PARTNER_USER_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME,
(SELECT COUNT(1) FROM PMS_PROTO_PLAN_REL_PART_INFO WHERE TARGET_OBJID = INFO.OBJID) SHAPE_CNT
FROM PMS_PROTO_PLAN_INFO INFO
)INFO WHERE 1=1
<if test="search_carType != null and search_carType != ''">
AND CAR_OBJID = #{search_carType}
</if>
<if test="search_productType != null and search_productType !=''">
AND PROD_OBJID = #{search_productType}
</if>
<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_partner != null and !''.equals(search_partner)">
AND UPPER(PARTNER_USER_NAME) LIKE UPPER('%${search_partner}%')
</if>
<if test="search_writer != null and !''.equals(search_writer)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
)
)
</select>
<!-- 입고관리 갑지 상세 내용을 가져온다. -->
<select id="getProtoTestBaseInfo" parameterType="map" resultType="map">
SELECT
INFO.OBJID,
INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = INFO.OEM_OBJID) AS OEM_NAME,
INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_CODE,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
INFO.REGDATE,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
INFO.STATUS,
INFO.WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME,
INFO.PARTNER_ID,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.PARTNER_ID) AS PARTNER_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.PARTNER_ID) AS PARTNER_DEPT_NAME
FROM PMS_PROTO_TEST_INFO INFO
WHERE INFO.OBJID = #{objId}
ORDER BY REGDATE DESC
</select>
<!-- 시작품 개발일정 갑지 상세 내용을 가져온다. -->
<select id="getProtoPlanBaseInfo" parameterType="map" resultType="map">
SELECT
INFO.OBJID,
INFO.OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = INFO.OEM_OBJID) AS OEM_NAME,
INFO.CAR_OBJID,
(SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_NAME,
(SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = INFO.CAR_OBJID) AS CAR_CODE,
INFO.PROD_GROUP_OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = INFO.PROD_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
INFO.PROD_OBJID,
(SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = INFO.PROD_OBJID) AS PRODUCT_NAME,
INFO.REGDATE,
TO_CHAR(INFO.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
INFO.STATUS,
INFO.WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.WRITER) AS DEPT_NAME,
INFO.PARTNER_ID,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = INFO.PARTNER_ID) AS PARTNER_USER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = INFO.PARTNER_ID) AS PARTNER_DEPT_NAME
FROM PMS_PROTO_PLAN_INFO INFO
WHERE INFO.OBJID = #{objId}
ORDER BY REGDATE DESC
</select>
<!--
시작제품 검사결과 현황 최초 화면에서 사용될 고객사, 차종, 제품군 정보를 가져온다.
갑지를 기준으로 하여 데이터(상세X)가 있으며 SOP가 가장 먼 차종으로 등록된 정보를 가져온다.
-->
<select id="getProtoDevTestStatusBaseParamInfo" parameterType="map" resultType="map">
SELECT
OEM_OBJID,
CAR_OBJID,
PRODUCT_GROUP_OBJID
FROM(
SELECT
INFO.*,
MILE.MILESTONE_DATE
FROM CAR_MILESTONE_MNG MILE,
(
SELECT
OEM_OBJID,
CAR_OBJID,
PROD_GROUP_OBJID AS PRODUCT_GROUP_OBJID
FROM PMS_PROTO_TEST_INFO
)INFO
WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND OEM_OBJID = INFO.OEM_OBJID AND ROWNUM = 1)
AND MILE.CAR_OBJID = INFO.CAR_OBJID
ORDER BY MILESTONE_DATE DESC NULLS LAST
) WHERE ROWNUM=1
</select>
<!--
시작제품 입고결과 현황 최초 화면에서 사용될 고객사, 차종, 제품군 정보를 가져온다.
갑지를 기준으로 하여 데이터(상세X)가 있으며 SOP가 가장 먼 차종으로 등록된 정보를 가져온다.
-->
<select id="getProtoDevStockStatusBaseParamInfo" parameterType="map" resultType="map">
SELECT
OEM_OBJID,
CAR_OBJID,
PRODUCT_GROUP_OBJID
FROM(
SELECT
INFO.*,
MILE.MILESTONE_DATE
FROM CAR_MILESTONE_MNG MILE,
(
SELECT
OEM_OBJID,
CAR_OBJID,
PROD_GROUP_OBJID AS PRODUCT_GROUP_OBJID
FROM PMS_PROTO_STOCK_INFO
)INFO
WHERE MILESTONE_OBJID = (SELECT OBJID FROM OEM_MILESTONE_MNG WHERE UPPER(MILESTONE_NAME) = 'SOP' AND OEM_OBJID = INFO.OEM_OBJID AND ROWNUM = 1)
AND MILE.CAR_OBJID = INFO.CAR_OBJID
ORDER BY MILESTONE_DATE DESC NULLS LAST
) WHERE ROWNUM=1
</select>
</mapper>