ERP-node/src/com/pms/mapper/admin.xml

8525 lines
250 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="admin">
<!-- //jmpark start-->
<insert id="insertMenu" parameterType="map">
INSERT
INTO MENU_INFO
(
OBJID,
MENU_TYPE,
SYSTEM_NAME,
PARENT_OBJ_ID,
MENU_NAME_KOR,
MENU_NAME_ENG,
<if test="SEQ != null and SEQ != ''">
SEQ,
</if>
MENU_URL,
MENU_DESC,
WRITER,
REGDATE,
STATUS
)
VALUES
(
#{OBJID}::numeric,
#{MENU_TYPE}::numeric,
#{SYSTEM_NAME},
#{PARENT_OBJ_ID}::numeric,
#{MENU_NAME_KOR},
#{MENU_NAME_ENG},
<if test="SEQ != null and SEQ != ''">
#{SEQ}::numeric,
</if>
#{MENU_URL},
#{MENU_DESC},
#{WRITER},
now(),
#{STATUS}
)
</insert>
<update id="updateMenu" parameterType="map">
UPDATE MENU_INFO
SET MENU_NAME_KOR = #{MENU_NAME_KOR},
MENU_NAME_ENG = #{MENU_NAME_ENG},
SEQ = #{SEQ}::numeric,
MENU_URL = #{MENU_URL},
MENU_DESC = #{MENU_DESC},
STATUS = #{STATUS}
WHERE OBJID = #{OBJID}::numeric
</update>
<update id="deleteMenu" parameterType="map">
DELETE FROM MENU_INFO WHERE OBJID = #{OBJID}::numeric
</update>
<select id="selectMenuInfo" parameterType="map" resultType="map">
SELECT
case MENU_TYPE
when '0' then 'admin'
when '1' then 'user'
else ''
END AS MENU_TYPE,
OBJID,
PARENT_OBJ_ID,
MENU_NAME_KOR,
MENU_NAME_ENG,
MENU_URL,
MENU_DESC,
STATUS,
case UPPER(STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else ''
END AS STATUS_TITLE,
SEQ
FROM MENU_INFO
WHERE OBJID = #{OBJID}::numeric
</select>
<!-- 위상위 admin menu를 제외한 목록을 가져온다. -->
<select id="selectViewAdminMenuList" parameterType="map" resultType="map">
WITH RECURSIVE view_menu(
objid,
menu_type,
parent_obj_id,
menu_name_kor,
menu_name_eng,
seq,
menu_url,
menu_desc,
writer,
regdate,
status,
system_name,
lev,
PATH,
cycle
) AS (
SELECT
menu_org.*,
1,
ARRAY [menu_org.objid],
false
FROM
menu_info menu_org
WHERE 1=1
and menu_org.PARENT_OBJ_ID = 0
and menu_org.MENU_TYPE = 0
UNION ALL
select
menu.*,
LEV + 1,
PATH||menu.seq,
menu.objid = ANY(PATH)
from
menu_info menu
JOIN
view_menu
ON
menu.PARENT_OBJ_ID = view_menu.OBJID
WHERE 1=1
)
SELECT
*
FROM view_menu
WHERE 1=1
<if test="SYSTEM_NAME != null and SYSTEM_NAME != ''">
and UPPER(system_name) = UPPER(#{SYSTEM_NAME})
</if>
order by
PATH
</select>
<!-- <select id="selectViewAdminMenuList" parameterType="map" resultType="map">
SELECT T.*
FROM
(
SELECT LEVEL AS LEV,
DECODE(MENU.MENU_TYPE,'0','admin','1','user') MENU_TYPE,
MENU.OBJID,
MENU.PARENT_OBJ_ID,
MENU.MENU_NAME_KOR,
MENU.MENU_URL,
MENU.MENU_DESC,
MENU.SEQ,
MENU.WRITER,
TO_CHAR(MENU.REGDATE,'YYYY-MM-DD') REGDATE,
(SELECT MAX(SEQ) FROM MENU_INFO WHERE PARENT_OBJ_ID = MENU.PARENT_OBJ_ID AND UPPER(STATUS) = 'ACTIVE') MAX_SEQ,
(SELECT MIN(SEQ) FROM MENU_INFO WHERE PARENT_OBJ_ID = MENU.PARENT_OBJ_ID) MIN_SEQ,
MENU.STATUS,
DECODE(UPPER(MENU.STATUS),'ACTIVE','활성화','INACTIVE','비활성화') STATUS_TITLE
FROM MENU_INFO MENU
<if test="SYSTEM_NAME != null and SYSTEM_NAME != ''">
WHERE UPPER(SYSTEM_NAME) = UPPER(#{SYSTEM_NAME})
</if>
START WITH MENU.PARENT_OBJ_ID=0
AND MENU.MENU_TYPE=0
CONNECT BY PRIOR MENU.OBJID = MENU.PARENT_OBJ_ID
ORDER SIBLINGS BY MENU.SEQ ASC
)T
<![CDATA[
WHERE T.LEV > '1'
]]>
</select> -->
<select id="selectAdminMenuList" parameterType="map" resultType="map">
WITH RECURSIVE v_menu(
LEVEL,
MENU_TYPE,
OBJID,
PARENT_OBJ_ID,
MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
REGDATE,
STATUS,
SYSTEM_NAME,
PATH,
CYCLE
) AS (
SELECT
1 AS LEVEL,
MENU_TYPE,
OBJID::numeric,
PARENT_OBJ_ID,
MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
REGDATE,
STATUS,
SYSTEM_NAME,
ARRAY [MENU.OBJID],
FALSE
FROM MENU_INFO MENU
WHERE PARENT_OBJ_ID=0
AND MENU_TYPE=0
UNION ALL
SELECT
V_MENU.LEVEL+1,
MENU_SUB.MENU_TYPE,
MENU_SUB.OBJID,
MENU_SUB.PARENT_OBJ_ID,
MENU_SUB.MENU_NAME_KOR,
MENU_SUB.MENU_URL,
MENU_SUB.MENU_DESC,
MENU_SUB.SEQ,
MENU_SUB.WRITER,
MENU_SUB.REGDATE,
MENU_SUB.STATUS,
MENU_SUB.SYSTEM_NAME,
PATH||MENU_SUB.SEQ::numeric,
MENU_SUB.OBJID = ANY(PATH)
FROM MENU_INFO MENU_SUB
JOIN
V_MENU
ON
MENU_SUB.PARENT_OBJ_ID = V_MENU.OBJID
WHERE 1=1
)
SELECT
LEVEL AS LEV,
case MENU_TYPE
when '0' then 'admin'
when '1' then 'user'
else ''
END AS MENU_TYPE,
OBJID,
PARENT_OBJ_ID,
MENU_NAME_KOR,
LPAD(' ', 3*(LEVEL-1))||MENU_NAME_KOR LPAD_MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS,
SYSTEM_NAME,
case UPPER(STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else ''
END AS STATUS_TITLE
FROM
v_menu A
WHERE 1=1
AND (SYSTEM_NAME = 'PMS' OR SYSTEM_NAME = '')
ORDER BY PATH,SEQ
</select>
<!-- <select id="selectAdminMenuList" parameterType="map" resultType="map">
SELECT LEVEL AS LEV,
DECODE(MENU_TYPE,'0','admin','1','user') MENU_TYPE,
OBJID,
PARENT_OBJ_ID,
MENU_NAME_KOR,
LPAD(' ', 3*(LEVEL-1))||MENU_NAME_KOR LPAD_MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS,
DECODE(UPPER(STATUS),'ACTIVE','활성화','INACTIVE','비활성화') STATUS_TITLE
FROM MENU_INFO
START WITH PARENT_OBJ_ID=0
AND MENU_TYPE=0
CONNECT BY PRIOR OBJID = PARENT_OBJ_ID
<if test="SYSTEM_NAME != null and SYSTEM_NAME != ''">
AND UPPER(SYSTEM_NAME) = UPPER(#{SYSTEM_NAME})
</if>
ORDER SIBLINGS BY SEQ ASC
</select> -->
<!-- 사용자가 사용하는 화면에서 보여지는 메뉴 목록을 가져온다. -->
<select id="selectUserViewMenuList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
WITH RECURSIVE v_menu(
LEVEL,
MENU_TYPE,
OBJID,
PARENT_OBJ_ID,
MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
REGDATE,
STATUS,
PATH,
CYCLE
) AS (
SELECT
1 AS LEVEL,
MENU_TYPE,
OBJID::numeric,
PARENT_OBJ_ID,
MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
REGDATE,
STATUS,
ARRAY [MENU.OBJID],
FALSE
FROM MENU_INFO MENU
WHERE PARENT_OBJ_ID=0
AND MENU_TYPE=1
UNION ALL
SELECT
V_MENU.LEVEL+1,
MENU_SUB.MENU_TYPE,
MENU_SUB.OBJID,
MENU_SUB.PARENT_OBJ_ID,
MENU_SUB.MENU_NAME_KOR,
MENU_SUB.MENU_URL,
MENU_SUB.MENU_DESC,
MENU_SUB.SEQ,
MENU_SUB.WRITER,
MENU_SUB.REGDATE,
MENU_SUB.STATUS,
PATH||MENU_SUB.SEQ::numeric,
MENU_SUB.OBJID = ANY(PATH)
FROM MENU_INFO MENU_SUB
JOIN
V_MENU
ON
MENU_SUB.PARENT_OBJ_ID = V_MENU.OBJID
WHERE 1=1
AND UPPER(MENU_SUB.STATUS) = 'ACTIVE'
)
SELECT
LEVEL AS LEV,
case MENU_TYPE
when '0' then 'admin'
when '1' then 'user'
else ''
END AS MENU_TYPE,
OBJID,
PARENT_OBJ_ID,
MENU_NAME_KOR,
LPAD(' ', 3*(LEVEL-1))||MENU_NAME_KOR LPAD_MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS,
case UPPER(STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else ''
END AS STATUS_TITLE,
B.CREATE_AUTH_CNT,
B.READ_AUTH_CNT,
B.UPDATE_AUTH_CNT,
B.DELETE_AUTH_CNT
FROM
v_menu A,
(
SELECT
B.MENU_OBJID,
SUM(CASE B.CREATE_YN WHEN 'Y' THEN 1 ELSE 0 END) CREATE_AUTH_CNT,
SUM(CASE B.READ_YN WHEN 'Y' THEN 1 ELSE 0 END) READ_AUTH_CNT,
SUM(CASE B.UPDATE_YN WHEN 'Y' THEN 1 ELSE 0 END) UPDATE_AUTH_CNT,
SUM(CASE B.DELETE_YN WHEN 'Y' THEN 1 ELSE 0 END) DELETE_AUTH_CNT
FROM
REL_MENU_AUTH B,
AUTHORITY_MASTER C
WHERE
1 = 1
AND B.AUTH_OBJID = C.OBJID
AND C.OBJID IN (
SELECT
MASTER_OBJID
FROM
AUTHORITY_SUB_USER
WHERE
USER_ID =
)
GROUP BY
B.MENU_OBJID
) B
WHERE 1=1
AND a.objid = b.menu_objid
AND A.seq > 1
ORDER BY PATH,SEQ
</select>
<!-- 사용자가 사용하는 화면에서 보여지는 메뉴 목록을 가져온다. -->
<select id="getParamUserViewMenuList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
WITH RECURSIVE v_menu(
LEVEL,
MENU_TYPE,
OBJID,
PARENT_OBJ_ID,
MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
REGDATE,
STATUS,
PATH,
CYCLE
) AS (
SELECT
1 AS LEVEL,
MENU_TYPE,
OBJID::numeric,
PARENT_OBJ_ID,
MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
REGDATE,
STATUS,
ARRAY [MENU.SEQ],
FALSE
FROM MENU_INFO MENU
WHERE 1=1
<!--
AND PARENT_OBJ_ID = 0
-->
AND MENU_TYPE=1
AND PARENT_OBJ_ID = #{MENUOBJID}::NUMERIC
UNION ALL
SELECT
V_MENU.LEVEL+1,
MENU_SUB.MENU_TYPE,
MENU_SUB.OBJID,
MENU_SUB.PARENT_OBJ_ID,
MENU_SUB.MENU_NAME_KOR,
MENU_SUB.MENU_URL,
MENU_SUB.MENU_DESC,
MENU_SUB.SEQ,
MENU_SUB.WRITER,
MENU_SUB.REGDATE,
MENU_SUB.STATUS,
PATH||MENU_SUB.SEQ::NUMERIC,
MENU_SUB.OBJID = ANY(PATH)
FROM MENU_INFO MENU_SUB
JOIN V_MENU
ON MENU_SUB.PARENT_OBJ_ID = V_MENU.OBJID
WHERE 1=1
AND UPPER(MENU_SUB.STATUS) = 'ACTIVE'
)
SELECT
V.LEVEL,
A.*
FROM MENU_INFO A
,V_MENU V
WHERE 1=1
<!--
AND A.AND PARENT_OBJ_ID = #{MENUOBJID}::NUMERIC
-->
AND A.OBJID = V.OBJID
AND A.STATUS = 'active'
AND (
EXISTS (
SELECT 'E'
<!--
B.MENU_OBJID,
SUM(CASE B.CREATE_YN WHEN 'Y' THEN 1 ELSE 0 END) CREATE_AUTH_CNT,
SUM(CASE B.READ_YN WHEN 'Y' THEN 1 ELSE 0 END) READ_AUTH_CNT,
SUM(CASE B.UPDATE_YN WHEN 'Y' THEN 1 ELSE 0 END) UPDATE_AUTH_CNT,
SUM(CASE B.DELETE_YN WHEN 'Y' THEN 1 ELSE 0 END) DELETE_AUTH_CNT
-->
FROM
REL_MENU_AUTH B,
AUTHORITY_MASTER C
WHERE 1=1
AND A.OBJID = B.MENU_OBJID
AND B.AUTH_OBJID = C.OBJID
AND C.OBJID IN (
SELECT
MASTER_OBJID
FROM
AUTHORITY_SUB_USER
WHERE
USER_ID = #{userId}
)
)
OR EXISTS (SELECT 'E'
FROM AUTHORITY_MASTER AM
,AUTHORITY_SUB_USER ASU
WHERE AM.AUTH_CODE = '0000'
AND AM.OBJID = ASU.MASTER_OBJID
AND ASU.USER_ID = #{userId}
)
)
<!--
ORDER BY A.SEQ
-->
ORDER BY V.PATH
</select>
<!-- <select id="selectUserViewMenuList" parameterType="map" resultType="map">
SELECT T.*
FROM
(
SELECT LEVEL AS LEV,
DECODE(MENU.MENU_TYPE,'0','admin','1','user') MENU_TYPE,
MENU.OBJID,
MENU.PARENT_OBJ_ID,
MENU.MENU_NAME_KOR,
MENU.MENU_URL,
MENU.MENU_DESC,
MENU.SEQ,
MENU.WRITER,
TO_CHAR(MENU.REGDATE,'YYYY-MM-DD') REGDATE,
(SELECT MAX(SEQ) FROM MENU_INFO WHERE PARENT_OBJ_ID = MENU.PARENT_OBJ_ID AND UPPER(STATUS) = 'ACTIVE') MAX_SEQ,
(SELECT MIN(SEQ) FROM MENU_INFO WHERE PARENT_OBJ_ID = MENU.PARENT_OBJ_ID ) MIN_SEQ,
MENU.STATUS,
DECODE(UPPER(MENU.STATUS),'ACTIVE','활성화','INACTIVE','비활성화') STATUS_TITLE
FROM MENU_INFO MENU START WITH MENU.PARENT_OBJ_ID=0
AND MENU.MENU_TYPE=1 CONNECT BY PRIOR MENU.OBJID = MENU.PARENT_OBJ_ID AND UPPER(STATUS) = 'ACTIVE'
ORDER SIBLINGS BY MENU.SEQ ASC
)T
<![CDATA[
WHERE T.LEV > '1'
]]>
</select> -->
<select id="selectUserMenuList" parameterType="map" resultType="map">
WITH RECURSIVE v_menu(
LEVEL,
MENU_TYPE,
OBJID,
PARENT_OBJ_ID,
MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
REGDATE,
STATUS,
PATH,
CYCLE
) AS (
SELECT
1 AS LEVEL,
MENU_TYPE,
OBJID::numeric,
PARENT_OBJ_ID,
MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
REGDATE,
STATUS,
ARRAY [MENU.OBJID],
FALSE
FROM MENU_INFO MENU
WHERE PARENT_OBJ_ID=0
AND MENU_TYPE=1
UNION ALL
SELECT
V_MENU.LEVEL+1,
MENU_SUB.MENU_TYPE,
MENU_SUB.OBJID,
MENU_SUB.PARENT_OBJ_ID,
MENU_SUB.MENU_NAME_KOR,
MENU_SUB.MENU_URL,
MENU_SUB.MENU_DESC,
MENU_SUB.SEQ,
MENU_SUB.WRITER,
MENU_SUB.REGDATE,
MENU_SUB.STATUS,
PATH||MENU_SUB.SEQ::numeric,
MENU_SUB.OBJID = ANY(PATH)
FROM MENU_INFO MENU_SUB
JOIN
V_MENU
ON
MENU_SUB.PARENT_OBJ_ID = V_MENU.OBJID
WHERE 1=1
)
SELECT
LEVEL AS LEV,
case MENU_TYPE
when '0' then 'admin'
when '1' then 'user'
else ''
END AS MENU_TYPE,
OBJID,
PARENT_OBJ_ID,
MENU_NAME_KOR,
LPAD(' ', 3*(LEVEL-1))||MENU_NAME_KOR LPAD_MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS,
case UPPER(STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else ''
END AS STATUS_TITLE
FROM
v_menu A
WHERE 1=1
AND (A.SEQ > 1 OR (A.SEQ = 0 AND LEVEL = 1))
ORDER BY PATH,SEQ
</select>
<!-- <select id="selectUserMenuList" parameterType="map" resultType="map">
SELECT LEVEL AS LEV,
DECODE(MENU_TYPE,'0','admin','1','user') MENU_TYPE,
OBJID,
PARENT_OBJ_ID,
MENU_NAME_KOR,
LPAD(' ', 3*(LEVEL-1))||MENU_NAME_KOR LPAD_MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS,
DECODE(UPPER(STATUS),'ACTIVE','활성화','INACTIVE','비활성화') STATUS_TITLE
FROM MENU_INFO START WITH PARENT_OBJ_ID=0
AND MENU_TYPE=1
CONNECT BY PRIOR OBJID = PARENT_OBJ_ID
<if test="SYSTEM_NAME != null and SYSTEM_NAME != ''">
AND UPPER(SYSTEM_NAME) = UPPER(#{SYSTEM_NAME})
</if>
ORDER SIBLINGS BY SEQ ASC
</select> -->
<!-- 권한 관리 목록 -->
<select id="selectAuthMngList" parameterType="map" resultType="map">
SELECT A.*
FROM(
SELECT A.* , ROW_NUMBER() OVER(ORDER BY AUTH_CODE ASC NULLS LAST) RNUM
FROM(
SELECT A.*
FROM (
SELECT
MST.OBJID,
MST.AUTH_NAME,
MST.AUTH_CODE,
MST.WRITER,
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = MST.WRITER) WRITER_TITLE,
TO_CHAR(MST.REGDATE,'YYYY-MM-DD') REGDATE,
REGDATE REGDATE_ORG,
MST.STATUS,
case UPPER(MST.STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else MST.STATUS
end STATUS_TITLE,
COALESCE(SUB_USER.USER_CNT,0) AS USER_CNT
FROM
AUTHORITY_MASTER MST
LEFT JOIN (
SELECT
MASTER_OBJID,
COUNT(USER_TITLE) AS USER_CNT
FROM(
SELECT
MASTER_OBJID,
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = SUB_USER.USER_ID) USER_TITLE
FROM AUTHORITY_SUB_USER SUB_USER
) A GROUP BY MASTER_OBJID
) SUB_USER
ON MST.OBJID = SUB_USER.MASTER_OBJID
) A WHERE 1=1
<if test="search_auth != null and !''.equals(search_auth)">
AND UPPER(AUTH_NAME) LIKE UPPER('%${search_auth}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(WRITER_TITLE) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_fromDate != null and search_fromDate != '' and search_toDate != null and search_toDate != ''">
AND REGDATE BETWEEN #{search_fromDate} AND #{search_toDate}
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) LIKE UPPER('%${search_status}%')
</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>
) A
) A WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</select>
<!-- 권한 관리 목록 Count -->
<select id="selectAuthMngListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM(
SELECT
MST.OBJID,
MST.AUTH_NAME,
MST.AUTH_CODE,
MST.WRITER,
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = MST.WRITER) WRITER_TITLE,
TO_CHAR(MST.REGDATE,'YYYY-MM-DD') REGDATE,
REGDATE REGDATE_ORG,
MST.STATUS,
case UPPER(MST.STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else MST.STATUS
end STATUS_TITLE,
SUB_USER.USER_CNT
FROM
AUTHORITY_MASTER MST
LEFT JOIN (
SELECT
MASTER_OBJID,
COUNT(USER_TITLE) AS USER_CNT
FROM(
SELECT
MASTER_OBJID,
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = SUB_USER.USER_ID) USER_TITLE
FROM AUTHORITY_SUB_USER SUB_USER
) A GROUP BY MASTER_OBJID
) SUB_USER
ON MST.OBJID = SUB_USER.MASTER_OBJID
) A WHERE 1=1
<if test="search_auth != null and !''.equals(search_auth)">
AND UPPER(AUTH_NAME) LIKE UPPER('%${search_auth}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(WRITER_TITLE) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_fromDate != null and search_fromDate != '' and search_toDate != null and search_toDate != ''">
AND REGDATE BETWEEN #{search_fromDate} AND #{search_toDate}
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) LIKE UPPER('%${search_status}%')
</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>
) A WHERE 1=1
</select>
<!-- 권한그룹 소속인원 목록 -->
<select id="selectAuthGroupMemberList" parameterType="map" resultType="map">
SELECT AUTH_SUB.*, ROW_NUMBER() OVER(ORDER BY REGDATE_ORG DESC) RNUM FROM (
SELECT OBJID
,MASTER_OBJID
,(SELECT AUTH_CODE FROM AUTHORITY_MASTER WHERE OBJID = T.MASTER_OBJID) AS AUTH_CODE
,USER_ID
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.USER_ID) AS USER_NAME
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = T.USER_ID) AS DEPT_NAME
, (SELECT USER_TYPE_NAME FROM USER_INFO WHERE USER_ID = T.USER_ID) AS USER_TYPE_NAME
,(SELECT EMAIL FROM USER_INFO WHERE USER_ID = T.USER_ID) AS EMAIL
,WRITER
,REGDATE AS REGDATE_ORG
,TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
FROM AUTHORITY_SUB_USER T
WHERE 1=1
) AUTH_SUB
WHERE 1=1
<if test=" MASTER_OBJID != '' and MASTER_OBJID != null ">
AND AUTH_SUB.MASTER_OBJID = #{MASTER_OBJID}::numeric
</if>
<if test=" search_authCode != '' and search_authCode != null ">
AND AUTH_SUB.AUTH_CODE = #{search_authCode}
</if>
</select>
<!-- user id, 이름, 부서코드, 직책코드, 사용자유형으로 사용자를 검색한다. -->
<select id="selectUserInfo" parameterType="map" resultType="map">
SELECT T.SABUN,
T.USER_ID,
T.USER_PASSWORD,
T.USER_NAME,
T.USER_NAME_ENG,
T.USER_NAME_CN,
T.DEPT_CODE,
T.DEPT_NAME,
T.POSITION_CODE,
T.POSITION_NAME,
T.EMAIL,
T.TEL,
T.CELL_PHONE,
T.USER_TYPE,
T.USER_TYPE_NAME,
T.REGDATE
FROM USER_INFO T
WHERE USER_ID IS NOT NULL
<if test="email_user != null and email_user != ''">
AND T.USER_ID = #{email_user}
</if>
<if test="userId != null and userId != ''">
AND T.USER_ID LIKE '%${userId}%'
</if>
<if test="userName != null and userName != ''">
AND UPPER(T.USER_NAME) LIKE UPPER('%${userName}%')
</if>
<if test="deptCode != null and deptCode != ''">
AND UPPER(T.DEPT_CODE) LIKE UPPER('%${deptCode}%')
</if>
<if test="deptName != null and deptName != ''">
AND UPPER(T.DEPT_NAME) LIKE UPPER('%${deptName}%')
</if>
<if test="userTypeName != null and userTypeName != ''">
AND UPPER(T.USER_TYPE_NAME) LIKE UPPER('%${userTypeName}%')
</if>
<if test="targetObjId != null and targetObjId != ''">
AND NOT EXISTS(
SELECT USER_ID FROM AUTHORITY_SUB_USER SUB WHERE SUB.MASTER_OBJID = #{targetObjId}::numeric AND SUB.USER_ID = T.USER_ID
)
</if>
</select>
<!-- 권한그룹의 존재여부를 확인하여 입력 또는 수정한다. -->
<update id="mergeAuthorityMaster" parameterType="map">
INSERT INTO AUTHORITY_MASTER
(
OBJID,
AUTH_NAME,
AUTH_CODE,
WRITER,
REGDATE,
STATUS
)
VALUES
(
#{OBJID}::numeric,
#{AUTH_NAME},
#{AUTH_CODE},
#{WRITER},
now(),
#{STATUS}
) ON CONFLICT (OBJID) DO
UPDATE
SET
AUTH_NAME = #{AUTH_NAME},
AUTH_CODE = #{AUTH_CODE},
STATUS = #{STATUS}
</update>
<!-- <update id="mergeAuthorityMaster" parameterType="map">
MERGE INTO AUTHORITY_MASTER T USING DUAL ON ( T.OBJID = #{OBJID})
WHEN MATCHED THEN
UPDATE
SET T.AUTH_NAME = #{AUTH_NAME},
T.AUTH_CODE = #{AUTH_CODE},
T.STATUS = #{STATUS}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.AUTH_NAME,
T.AUTH_CODE,
T.WRITER,
T.REGDATE,
T.STATUS
)
VALUES
(
#{OBJID},
#{AUTH_NAME},
#{AUTH_CODE},
#{WRITER},
SYSDATE,
#{STATUS}
)
</update> -->
<!-- 권한그룹서 인원을 삭제한다.. -->
<delete id="deleteAuthorityMember" parameterType="map">
DELETE FROM AUTHORITY_SUB_USER
WHERE
MASTER_OBJID = #{MASTEROBJID}::numeric
AND OBJID = #{USER_OBJID}::numeric
</delete>
<!-- 권한그룹에 포함되지 않은 인원을 권한 그룹에 추가 한다. -->
<update id="mergeInsertAuthoritySubUser" parameterType="map">
INSERT INTO AUTHORITY_SUB_USER
(
OBJID,
MASTER_OBJID,
USER_ID,
WRITER,
REGDATE
)
SELECT
#{OBJID}::numeric,
#{MASTEROBJID}::numeric,
#{USERID},
#{WRITER},
now()
WHERE 1=1
AND NOT EXISTS(
SELECT * FROM AUTHORITY_SUB_USER WHERE 1=1 AND USER_ID = #{USERID} AND MASTER_OBJID = #{MASTEROBJID}::numeric
)
</update>
<update id="InsertAuthorityHistory" parameterType="map">
INSERT INTO AUTHORITY_MASTER_HISTORY
(
OBJID,
PARENT_OBJID,
PARENT_NAME,
PARENT_CODE,
USER_ID,
ACTIVE,
HISTORY_TYPE,
WRITER,
REG_DATE
) VALUES (
#{OBJID}::numeric,
#{MASTEROBJID}::numeric,
(SELECT AM.AUTH_NAME FROM AUTHORITY_MASTER AM WHERE AM.OBJID = #{MASTEROBJID}::NUMERIC),
(SELECT AM.AUTH_CODE FROM AUTHORITY_MASTER AM WHERE AM.OBJID = #{MASTEROBJID}::NUMERIC),
#{USERID},
(SELECT AM.STATUS FROM AUTHORITY_MASTER AM WHERE AM.OBJID = #{MASTEROBJID}::NUMERIC),
#{HISTORY_TYPE},
#{WRITER},
NOW()
)
</update>
<!-- 권한 그룹에 연결된 사용자 정보를 가져온다. -->
<select id="getAuthSubUserInfo" parameterType="map" resultType="map">
SELECT
*
FROM AUTHORITY_SUB_USER
WHERE OBJID = #{USER_OBJID}::NUMERIC
</select>
<!-- <update id="mergeInsertAuthoritySubUser" parameterType="map">
MERGE INTO AUTHORITY_SUB_USER T USING DUAL ON ( T.user_id = #{OBJID} AND T.master_objid = #{MASTEROBJID})
WHEN NOT MATCHED THEN
INSERT
(
OBJID,
MASTER_OBJID,
USER_ID,
WRITER,
REGDATE
)
VALUES
(
#{OBJID},
#{MASTEROBJID},
#{USERID},
#{WRITER},
SYSDATE
)
</update> -->
<!-- 권한 그룹 정보 select -->
<select id="getAuthGroupInfo" parameterType="map" resultType="map">
SELECT OBJID,
AUTH_NAME,
AUTH_CODE,
WRITER,
REGDATE,
STATUS
FROM AUTHORITY_MASTER
WHERE OBJID = #{OBJID}::numeric
</select>
<!-- 권한 그룹 상태 변경 -->
<update id="changeAuthGroupStatus" parameterType="map">
UPDATE AUTHORITY_MASTER SET STATUS = #{STATUS} WHERE OBJID = #{OBJID}::numeric
</update>
<delete id="deleteAuthGroup" parameterType="map">
DELETE FROM AUTHORITY_MASTER WHERE OBJID = #{OBJID}::NUMERIC
</delete>
<delete id="deleteAuthGroupMember" parameterType="map">
DELETE FROM AUTHORITY_SUB_USER WHERE MASTER_OBJID = #{OBJID}::NUMERIC
</delete>
<delete id="deleteGroup" parameterType="map">
DELETE FROM DEPT_INFO WHERE DEPT_CODE = #{DEPT_CODE}
</delete>
<!-- <delete id="deleteGroupMember" parameterType="map">
DELETE FROM AUTHORITY_SUB_USER WHERE MASTER_OBJID = #{OBJID}::NUMERIC
</delete> -->
<!-- 메뉴에 해당하는 권한 그룹의 목록을 가져온다. -->
<select id="getMenuAuthList" parameterType="map" resultType="map">
SELECT
OBJID,
MENU_OBJID,
AUTH_OBJID,
(
SELECT
ARRAY_TO_STRING(ARRAY_AGG(A.USER_NAME),',')
FROM
(
SELECT
MASTER_OBJID,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.USER_ID) USER_NAME
FROM AUTHORITY_SUB_USER A
) A
WHERE A.MASTER_OBJID = AUTH_OBJID
) AUTH_GROUP_MEMBER,
(SELECT AUTH_NAME FROM AUTHORITY_MASTER WHERE OBJID = AUTH_OBJID) AUTH_GROUP_NAME,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
CREATE_YN,
READ_YN,
UPDATE_YN,
DELETE_YN
FROM REL_MENU_AUTH
WHERE MENU_OBJID = #{MENU_OBJID}::numeric
</select>
<!-- 메뉴에 추가 가능한 권한 그룹의 목록을 가져온다. -->
<select id="getAuthGroupList" parameterType="map" resultType="map">
SELECT
MST.OBJID,
MST.AUTH_NAME,
MST.AUTH_CODE,
MST.WRITER,
TO_CHAR(MST.REGDATE,'YYYY-MM-DD') REGDATE,
MST.STATUS,
(SELECT ARRAY_TO_STRING(ARRAY_AGG(USER_ID),',') FROM AUTHORITY_SUB_USER WHERE MASTER_OBJID = MST.OBJID) SUB_ID,
(
SELECT
ARRAY_TO_STRING(ARRAY_AGG(A.USER_NAME),',')
FROM
(
SELECT
MASTER_OBJID,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.USER_ID) USER_NAME
FROM AUTHORITY_SUB_USER A
) A
WHERE A.MASTER_OBJID = MST.OBJID
) SUB_NAME
FROM AUTHORITY_MASTER MST
WHERE 1=1
<if test="search_groupName != null and search_groupName != ''">
AND MST.AUTH_NAME LIKE '%${search_groupName}%'
</if>
<if test="search_userName != null and search_userName != ''">
AND MST.OBJID IN ((SELECT MASTER_OBJID FROM AUTHORITY_SUB_USER WHERE USER_ID IN (SELECT USER_ID FROM USER_INFO WHERE USER_NAME LIKE '%${search_userName}%')))
</if>
<if test="search_userId != null and search_userId != ''">
AND MST.OBJID IN ((SELECT MASTER_OBJID FROM AUTHORITY_SUB_USER WHERE USER_ID LIKE '%${search_userId}%'))
</if>
<if test="targetMenuObjId != null and targetMenuObjId != ''">
AND MST.OBJID NOT IN (SELECT AUTH_OBJID FROM REL_MENU_AUTH WHERE MENU_OBJID = #{targetMenuObjId}::numeric)
</if>
</select>
<!-- 메뉴에 권한 그룹을 연결한다. -->
<update id="mergeAddMenuAuthGroup" parameterType="map">
WITH V_PARAM AS (
SELECT
#{OBJID}::numeric,
#{MENU_OBJID}::numeric,
#{AUTH_OBJID}::numeric,
#{WRITER}
)
INSERT INTO REL_MENU_AUTH
(
OBJID,
MENU_OBJID,
AUTH_OBJID,
WRITER,
REGDATE
)
SELECT
A.*,
now()
FROM
V_PARAM A
WHERE 1=1
AND NOT EXISTS(
SELECT * FROM REL_MENU_AUTH B WHERE 1=1 AND B.MENU_OBJID = #{MENU_OBJID}::numeric AND B.AUTH_OBJID = #{AUTH_OBJID}::numeric
)
</update>
<!-- <update id="mergeAddMenuAuthGroup" parameterType="map">
MERGE INTO REL_MENU_AUTH T USING DUAL ON ( T.MENU_OBJID = #{MENU_OBJID} AND AUTH_OBJID = #{AUTH_OBJID})
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.MENU_OBJID,
T.AUTH_OBJID,
T.WRITER,
T.REGDATE
)
VALUES
(
#{OBJID},
#{MENU_OBJID},
#{AUTH_OBJID},
#{WRITER},
SYSDATE
)
</update> -->
<!-- 메뉴에 권한 그룹을 삭제한다. -->
<delete id="deleteMenuAuthGroup" parameterType="map">
DELETE FROM REL_MENU_AUTH WHERE MENU_OBJID = #{MENU_OBJID}::numeric AND OBJID = #{AUTH_OBJID}::numeric
</delete>
<update id="updateMenuAuthGroupFn" parameterType="map">
UPDATE
REL_MENU_AUTH
SET
<if test="type == 'create'">
CREATE_YN = #{value}
</if>
<if test="type == 'read'">
READ_YN = #{value}
</if>
<if test="type == 'update'">
UPDATE_YN = #{value}
</if>
<if test="type == 'delete'">
DELETE_YN = #{value}
</if>
,WRITER = #{writer}
WHERE OBJID = #{objid}::numeric
AND MENU_OBJID = #{menuObjid}::numeric
AND AUTH_OBJID = #{authObjid}::numeric
</update>
<!-- MENU_OBJID에 해당하는 권한그룹에 USER_ID에 해당하는 인원의 소속여부를 확인한다. -->
<select id="checkUserMenuAuth" parameterType="map" resultType="map">
SELECT COUNT(1) CNT
FROM REL_MENU_AUTH REL
WHERE MENU_OBJID = #{MENU_OBJID}
AND EXISTS
(
SELECT 1
FROM AUTHORITY_MASTER MASTER,
AUTHORITY_SUB_USER SUB
WHERE SUB.USER_ID = #{USER_ID}
AND SUB.MASTER_OBJID = MASTER.OBJID
AND MASTER.OBJID = REL.AUTH_OBJID
)
</select>
<!-- 차종정보를 저장한다. -->
<update id="saveCarInfo" parameterType="map">
MERGE INTO CAR_MNG T USING DUAL ON ( T.OBJID = #{OBJID})
WHEN MATCHED THEN
UPDATE
SET
T.CAR_CODE = #{CAR_CODE},
T.MODEL_CODE = #{MODEL_CODE},
T.CAR_NAME = #{CAR_NAME},
T.DESCRIPTION = #{DESCRIPTION},
T.GRADE_OBJID = #{GRADE_OBJID},
T.STATUS = #{STATUS}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.CAR_CODE,
T.MODEL_CODE,
T.CAR_NAME,
T.DESCRIPTION,
T.GRADE_OBJID,
T.WRITER,
T.REGDATE,
T.STATUS
)
VALUES
(
#{OBJID},
#{CAR_CODE},
#{MODEL_CODE},
#{CAR_NAME},
#{DESCRIPTION},
#{GRADE_OBJID},
#{WRITER},
SYSDATE,
#{STATUS}
)
</update>
<!-- 고객사 정보를 저장한다. -->
<update id="saveOEMInfo" parameterType="map">
INSERT INTO OEM_MNG
(
objid,
oem_code,
oem_name,
writer,
regdate,
status
) VALUES (
#{OBJID}::integer,
#{OEM_CODE},
#{OEM_NAME},
#{WRITER},
now(),
#{STATUS}
) ON CONFLICT (OBJID) DO
UPDATE
SET OEM_CODE = #{OEM_CODE},
OEM_NAME = #{OEM_NAME},
STATUS = #{STATUS}
</update>
<!-- 고객사 정보와 Milestone을 연결한다. -->
<update id="oemConnectMilestone" parameterType="map">
MERGE INTO OEM_MILESTONE_MNG T USING DUAL ON ( T.OBJID = #{OBJID} AND OEM_OBJID = #{OEM_OBJID})
WHEN MATCHED THEN
UPDATE
SET
T.SEQ = #{SEQ},
T.MILESTONE_NAME = #{MILESTONE_NAME},
T.STATUS = #{STATUS}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.SEQ,
T.OEM_OBJID,
T.MILESTONE_NAME,
T.WRITER,
T.REGDATE,
T.STATUS
)
VALUES
(
#{OBJID},
#{SEQ},
#{OEM_OBJID},
#{MILESTONE_NAME},
#{WRITER},
SYSDATE,
#{STATUS}
)
</update>
<!-- 고객사에 해당하는 Milestone 목록을 가져온다. -->
<select id="getOEMMilestoneList" parameterType="map" resultType="map">
SELECT
T.OBJID::varchar,
T.SEQ,
T.OEM_OBJID,
T.MILESTONE_NAME,
T.WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
(SELECT case when TO_CHAR(TO_DATE(MILESTONE_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') = '0001-01-01' then ''
else TO_CHAR(TO_DATE(MILESTONE_DATE, 'YYYY-MM-DD'), 'YYYY-MM-DD')
end
FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = T.OBJID AND CAR_OBJID = #{CAR_OBJID}::integer) AS MILESTONE_DATE,
(SELECT OBJID FROM CAR_MILESTONE_MNG WHERE MILESTONE_OBJID = T.OBJID AND CAR_OBJID = #{CAR_OBJID}::integer) AS MILESTONE_OBJID,
T.STATUS
FROM OEM_MILESTONE_MNG T
WHERE T.OEM_OBJID = #{OEM_OBJID}::integer
ORDER BY SEQ::integer ASC
</select>
<!-- 고객사에 해당하는 정보 목록을 가져온다. -->
<select id="getOEMInfoList" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT TBL.*, ROW_NUMBER() OVER(ORDER BY REGDATE_ORG DESC) RNUM
FROM(
SELECT TBL.*
FROM(
SELECT
OBJID,
OEM_CODE,
OEM_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) WRITER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) WRITER_DEPT,
WRITER,
REGDATE REGDATE_ORG,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS,
CASE WHEN UPPER(STATUS)='ACTIVE' THEN '활성화' ELSE '비활성화' END AS STATUS_STR
FROM OEM_MNG
WHERE 1=1
) AS TBL WHERE 1=1
<if test="OEM_OBJID != null and OEM_OBJID != ''">
AND TBL.OBJID = #{OEM_OBJID}::integer
</if>
<if test="OEM_NAME != null and OEM_NAME != ''">
AND UPPER(TBL.OEM_NAME) LIKE UPPER('%${OEM_NAME}%')
</if>
<if test="STATUS != null and STATUS != ''">
AND UPPER(TBL.STATUS) LIKE UPPER('%${STATUS}%')
</if>
<if test="search_fromDate != null and search_fromDate != ''">
AND TO_DATE(TBL.REGDATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'YYYY-MM-DD')
</if>
<if test="search_toDate != null and search_toDate != ''">
AND TO_DATE(TBL.REGDATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'YYYY-MM-DD')
</if>
<if test="WRITER != null and WRITER != ''">
AND UPPER(TBL.WRITER_NAME) LIKE UPPER('%${WRITER}%')
</if>
) AS TBL WHERE 1=1
) AS T WHERE 1=1
<if test="PAGE_END != null and PAGE_END != ''">
<![CDATA[ AND RNUM <= #{PAGE_END}::integer ]]>
</if>
<if test="PAGE_START != null and PAGE_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START}::integer ]]>
</if>
</select>
<!-- 고객사에 해당하는 정보 목록 Count를 가져온다. -->
<select id="getOEMInfoListCnt" parameterType="map" resultType="map">
SELECT CEIL(CAST(TOTAL_CNT AS FLOAT)/#{COUNT_PER_PAGE})::numeric::integer as MAX_PAGE_SIZE,
TOTAL_CNT::integer
FROM (
SELECT COUNT(1)::float TOTAL_CNT
FROM(
SELECT
OBJID::varchar,
OEM_CODE,
OEM_NAME,
(SELECT USER_NAME FROM USER_INFO A WHERE USER_ID = WRITER) WRITER_NAME,
(SELECT DEPT_NAME FROM USER_INFO A WHERE USER_ID = WRITER) WRITER_DEPT,
WRITER,
REGDATE REGDATE_ORG,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS,
case UPPER(STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else STATUS
end STATUS_STR
FROM OEM_MNG
WHERE 1=1
<if test="OEM_OBJID != null and OEM_OBJID != ''">
AND OBJID = #{OEM_OBJID}
</if>
<if test="OEM_NAME != null and OEM_NAME != ''">
AND UPPER(OEM_NAME) LIKE UPPER('%${OEM_NAME}%')
</if>
<if test="STATUS != null and STATUS != ''">
AND UPPER(STATUS) LIKE UPPER('%${STATUS}%')
</if>
) AS TBL WHERE 1=1
<if test="REGDATE_START != null and REGDATE_START != ''">
AND TO_DATE(TBL.REGDATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{REGDATE_START}, 'YYYY-MM-DD')
</if>
<if test="REGDATE_END != null and REGDATE_END != ''">
AND TO_DATE(TBL.REGDATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{REGDATE_END}, 'YYYY-MM-DD')
</if>
<if test="WRITER != null and WRITER != ''">
AND UPPER(WRITER_NAME) LIKE UPPER('%${WRITER}%')
</if>
) AS A WHERE 1=1
</select>
<!-- 공급업체에 해당하는 정보 목록 Count를 가져온다. -->
<select id="getSUPPLYInfoListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM(
SELECT TBL.*
FROM(
SELECT
OBJID
,SUPPLY_CODE
,(SELECT CC.CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SUPPLY_CODE) AS SUPPLY_CODE_NAME
,(SELECT CC.CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = AREA_CD) AS AREA_CD_NAME
,BUS_REG_NO
,OFFICE_NO
,EMAIL
,CHARGE_USER_NAME
,SUPPLY_NAME
,REG_NO
,SUPPLY_ADDRESS
,SUPPLY_BUSNAME
,SUPPLY_STOCKNAME
,SUPPLY_TEL_NO
,REG_ID
,TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
,STATUS
,case UPPER(STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else STATUS
end STATUS_STR
FROM ADMIN_SUPPLY_MNG
WHERE 1=1
) TBL
WHERE 1=1
<if test="supply_name != null and supply_name != ''">
AND UPPER(SUPPLY_NAME) LIKE UPPER('%${supply_name}%')
</if>
<if test="searchStatus != null and searchStatus != ''">
AND UPPER(STATUS) LIKE UPPER('%${searchStatus}%')
</if>
) TBL
WHERE 1=1
)A
WHERE 1=1
</select>
<!-- 공급업체에 해당하는 정보 목록을 가져온다. -->
<select id="getSUPPLYInfoList" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT TBL.*, ROW_NUMBER() OVER(ORDER BY SUPPLY_CODE_NAME) RNUM
FROM(
SELECT TBL.*
FROM(
SELECT
OBJID
,SUPPLY_CODE
,(SELECT CC.CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SUPPLY_CODE) AS SUPPLY_CODE_NAME
,(SELECT CC.CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = AREA_CD) AS AREA_CD_NAME
,BUS_REG_NO
,OFFICE_NO
,EMAIL
,CHARGE_USER_NAME
,SUPPLY_NAME
,REG_NO
,SUPPLY_ADDRESS
,SUPPLY_BUSNAME
,SUPPLY_STOCKNAME
,SUPPLY_TEL_NO
,SUPPLY_FAX_NO
,REG_ID
,TO_CHAR(REG_DATE,'YYYY-MM-DD') REGDATE
,STATUS
,case UPPER(STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else STATUS
end STATUS_STR
FROM ADMIN_SUPPLY_MNG
WHERE 1=1
<if test="searchHeadOffice != null and searchHeadOffice != ''">
<!-- 우성/성하 -->
AND OBJID IN ('-1130201617','462207249')
</if>
) TBL WHERE 1=1
<if test="supply_name != null and supply_name != ''">
AND UPPER(SUPPLY_NAME) LIKE UPPER('%${supply_name}%')
</if>
<if test="searchStatus != null and searchStatus != ''">
AND UPPER(STATUS) LIKE UPPER('%${searchStatus}%')
</if>
)TBL WHERE 1=1
) A WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</select>
<!-- 공급업체에 해당하는 정보 목록을 가져온다. -->
<select id="getSUPPLYInfoGridList" parameterType="map" resultType="map">
SELECT
OBJID::text
,SUPPLY_CODE
,(SELECT CC.CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SUPPLY_CODE) AS SUPPLY_CODE_NAME
,(SELECT CC.CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = AREA_CD) AS AREA_CD_NAME
,BUS_REG_NO
,OFFICE_NO
,EMAIL
,CHARGE_USER_NAME
,SUPPLY_NAME
,REG_NO
,SUPPLY_ADDRESS
,SUPPLY_BUSNAME
,SUPPLY_STOCKNAME
,SUPPLY_TEL_NO
,SUPPLY_FAX_NO
,REG_ID
,TO_CHAR(REG_DATE,'YYYY-MM-DD') REGDATE
,STATUS
,case UPPER(STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else STATUS
end STATUS_STR
FROM ADMIN_SUPPLY_MNG
WHERE 1=1
<if test="searchHeadOffice != null and searchHeadOffice != ''">
<!-- 우성/성하 -->
AND OBJID IN ('-1130201617','462207249')
</if>
<if test="supply_name != null and supply_name != ''">
AND UPPER(SUPPLY_NAME) LIKE UPPER('%${supply_name}%')
</if>
<if test="searchStatus != null and searchStatus != ''">
AND UPPER(STATUS) LIKE UPPER('%${searchStatus}%')
</if>
</select>
<!-- 임율마스터 해당하는 정보 목록을 가져온다. -->
<select id="getratecalMngList" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT TBL.*, ROW_NUMBER() OVER(ORDER BY REGDATE DESC) RNUM
FROM(
SELECT TBL.*
FROM(
SELECT
RATECAL_MGMT_OBJID
,POSITION
,USER_NAME
,ORDINARY_HOURLY_WAGE
,DAILY_WAGE
,EST_ANNUAL_SALARY
,USER_ID
,YYYY
,REASON
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = REG_USER_ID) WRITER_NAME
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = REG_USER_ID) WRITER_DEPT
,REG_USER_ID
,TO_CHAR(REG_DATE,'YYYY-MM-DD') REGDATE
,STATUS
,case UPPER(STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else STATUS
end STATUS_STR
FROM RATECAL_MGMT
WHERE 1=1
) TBL WHERE 1=1
<if test="yyyy != null and yyyy != ''">
AND YYYY =#{yyyy}
</if>
)TBL WHERE 1=1
) A WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</select>
<!-- 임율마스터 해당하는 정보 목록 Count를 가져온다. -->
<select id="getratecalListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM(
SELECT
*
FROM RATECAL_MGMT
WHERE 1=1
<if test="yyyy != null and yyyy != ''">
AND YYYY = #{yyyy}
</if>
) TBL WHERE 1=1
) A WHERE 1=1
</select>
<!-- 고객사 단건 정보를 가져온다. -->
<select id="getOEMInfo" parameterType="map" resultType="map">
SELECT
'1' RNUM,
OBJID,
OEM_CODE,
OEM_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) WRITER_NAME,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) WRITER_DEPT,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS,
CASE WHEN UPPER(STATUS)='ACTIVE' THEN '활성화' ELSE '비활성화' END AS STATUS_STR
FROM OEM_MNG
WHERE 1=1
<if test="OEM_OBJID != null and OEM_OBJID != ''">
AND OBJID = #{OEM_OBJID}::integer
</if>
<if test="OEM_NAME != null and OEM_NAME != ''">
AND UPPER(OEM_NAME) LIKE UPPER('%${OEM_NAME}%')
</if>
<if test="REGDATE_START != null and REGDATE_START != ''">
<![CDATA[ AND REGDATE <= TO_DATE(#{REGDATE_START},'YYYY-MM-DD') ]]>
</if>
<if test="REGDATE_END != null and REGDATE_END != ''">
<![CDATA[ AND REGDATE >= TO_DATE(#{REGDATE_END},'YYYY-MM-DD') ]]>
</if>
<if test="WRITER != null and WRITER != ''">
AND WRITER = #{WRITER}
</if>
<if test="STATUS != null and STATUS != ''">
AND STATUS = #{STATUS}
</if>
</select>
<!-- 공급업체 단건 정보를 가져온다. -->
<select id="getSupMngInfo" parameterType="map" resultType="map">
SELECT
OBJID
,SUPPLY_CODE
,SUPPLY_NAME
,REG_NO
,SUPPLY_ADDRESS
,SUPPLY_BUSNAME
,SUPPLY_STOCKNAME
,SUPPLY_TEL_NO
,SUPPLY_FAX_NO
,CHARGE_USER_NAME
,PAYMENT_METHOD
,REG_ID
,REG_DATE
,STATUS
,AREA_CD
,BUS_REG_NO
,OFFICE_NO
,EMAIL
FROM ADMIN_SUPPLY_MNG
WHERE OBJID = #{objid}::numeric
</select>
<!-- 공급업체 단건 정보를 가져온다. -->
<select id="getratecalInfo" parameterType="map" resultType="map">
SELECT
RATECAL_MGMT_OBJID
,POSITION
,USER_NAME
,ORDINARY_HOURLY_WAGE
,DAILY_WAGE
,EST_ANNUAL_SALARY
,REG_USER_ID
,REG_DATE
,USER_ID
,YYYY
,REASON
,STATUS
FROM RATECAL_MGMT
WHERE RATECAL_MGMT_OBJID = #{objid}::numeric
</select>
<!-- //공급업체 등록 및 저장 -->
<update id="mergeSupMgmtInfo" parameterType="map">
INSERT INTO ADMIN_SUPPLY_MNG
(
OBJID
,SUPPLY_CODE
,SUPPLY_NAME
,REG_NO
,SUPPLY_ADDRESS
,SUPPLY_BUSNAME
,SUPPLY_STOCKNAME
,SUPPLY_TEL_NO
,SUPPLY_FAX_NO
,CHARGE_USER_NAME
,PAYMENT_METHOD
,REG_ID
,REG_DATE
,STATUS
,AREA_CD
,BUS_REG_NO
,OFFICE_NO
,EMAIL
)
VALUES
(
#{objid }::NUMERIC
,#{supply_code }
,#{supply_name }
,#{reg_no }
,#{supply_address }
,#{supply_busname }
,#{supply_stockname }
,#{supply_tel_no }
,#{supply_fax_no }
,#{charge_user_name }
,#{payment_method }
,#{reg_id }
,now()
,'active'
,#{area_cd }
,#{bus_reg_no }
,#{office_no }
,#{email }
)
ON CONFLICT (OBJID) DO
UPDATE
SET
SUPPLY_CODE =#{supply_code }
,SUPPLY_NAME =#{supply_name }
,REG_NO =#{reg_no }
,SUPPLY_ADDRESS =#{supply_address }
,SUPPLY_BUSNAME =#{supply_busname }
,SUPPLY_STOCKNAME =#{supply_stockname }
,SUPPLY_TEL_NO =#{supply_tel_no }
,SUPPLY_FAX_NO =#{supply_fax_no }
,CHARGE_USER_NAME =#{charge_user_name }
,PAYMENT_METHOD =#{payment_method }
,REG_ID =#{reg_id }
,REG_DATE =#{reg_date }
,AREA_CD =#{area_cd }
,BUS_REG_NO =#{bus_reg_no }
,OFFICE_NO =#{office_no }
,EMAIL =#{email }
</update>
<!-- <update id="mergeSupMgmtInfo" parameterType="map">
MERGE INTO SUPPLY_MNG USING DUAL ON (OBJID = #{objid})
WHEN MATCHED THEN
UPDATE SET
SUPPLY_NAME=#{supply_name}
,REG_NO=#{reg_no}
,SUPPLY_ADDRESS=#{supply_address}
,SUPPLY_BUSNAME=#{supply_busname}
,SUPPLY_STOCKNAME=#{supply_stockname}
,SUPPLY_TEL_NO=#{supply_tel_no}
,SUPPLY_FAX_NO=#{supply_fax_no}
,CHARGE_USER_NAME=#{charge_user_name}
,PAYMENT_METHOD=#{payment_method}
,STATUS=#{status}
WHEN NOT MATCHED THEN
INSERT (
OBJID
,SUPPLY_CODE
,SUPPLY_NAME
,REG_NO
,SUPPLY_ADDRESS
,SUPPLY_BUSNAME
,SUPPLY_STOCKNAME
,SUPPLY_TEL_NO
,SUPPLY_FAX_NO
,CHARGE_USER_NAME
,PAYMENT_METHOD
,REG_ID
,REG_DATE
,STATUS
) VALUES (
#{objid}
,('SUP_CD' || LPAD((SELECT MAX(SUBSTR(SUPPLY_CODE,7,10)) FROM SUPPLY_MNG) + 1,4,'0'))
,#{supply_name}
,#{reg_no}
,#{supply_address}
,#{supply_busname}
,#{supply_stockname}
,#{supply_tel_no}
,#{supply_fax_no}
,#{charge_user_name}
,#{payment_method}
,#{userId}
,sysdate
,#{status}
)
</update> -->
<insert id="insertSupplyMngHistory" parameterType="map">
INSERT INTO ADMIN_SUPPLY_MNG_HISTORY
SELECT
#{objid}::numeric,
#{targetObjid}::numeric,
SUPPLY_CODE,
SUPPLY_NAME,
REG_NO,
SUPPLY_ADDRESS,
SUPPLY_BUSNAME,
SUPPLY_STOCKNAME,
SUPPLY_TEL_NO,
SUPPLY_FAX_NO,
CHARGE_USER_NAME,
PAYMENT_METHOD,
#{writer},
NOW(),
STATUS
FROM ADMIN_SUPPLY_MNG
WHERE OBJID = #{targetObjid}::numeric
</insert>
<!-- //공급업체 history -->
<select id="supMgmtInfoHistoryList" parameterType="map" resultType="map">
SELECT
A.*
FROM (
SELECT
A.*,
ROW_NUMBER() OVER (ORDER BY RM DESC) AS RNUM
FROM (
SELECT
T.*,
ROW_NUMBER() OVER (ORDER BY REGDATE) AS RM,
(SELECT USER_NAME FROM USER_INFO UI WHERE T.WRITER = UI.USER_ID) AS WRITER_NAME,
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS REGDATE_TITLE
FROM
ADMIN_SUPPLY_MNG_HISTORY T
WHERE TARGET_OBJID = #{objid}::numeric
) A
WHERE 1=1
) A
WHERE 1=1
<if test="PAGE_END != null and PAGE_END != ''">
<![CDATA[ AND RNUM::integer <= #{PAGE_END}::integer ]]>
</if>
<if test="PAGE_START != null and PAGE_START != ''">
<![CDATA[ AND RNUM::integer >= #{PAGE_START}::integer ]]>
</if>
</select>
<!-- //공급업체 history -->
<select id="supMgmtInfoHistoryListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM
ADMIN_SUPPLY_MNG_HISTORY T
WHERE TARGET_OBJID = #{objid}::numeric
) A
WHERE 1=1
</select>
<!-- //임율마스터 이력 등록 -->
<insert id="saveRatecalMgmtHistoryInfo" parameterType="map">
INSERT INTO RATECAL_MGMT_HISTORY
(
ratecal_mgmt_objid,
old_data,
new_data,
reg_date
) VALUES (
#{objid}::numeric,
(select ORDINARY_HOURLY_WAGE from RATECAL_MGMT where RATECAL_MGMT_OBJID = #{objid}::numeric),
TRIM(TO_CHAR(#{ordinary_hourly_wage}::numeric,'999,999,999,990')),
now()
)
</insert>
<!-- //임율마스터 등록 및 저장 -->
<update id="mergeratecalMgmtInfo" parameterType="map">
with upsert as (
update
RATECAL_MGMT
set
YYYY=#{yyyy}
,ORDINARY_HOURLY_WAGE=TRIM(TO_CHAR(#{ordinary_hourly_wage}::numeric,'999,999,999,990'))
,DAILY_WAGE=TRIM(TO_CHAR(#{ordinary_hourly_wage}::numeric*8,'999,999,999,990'))
,EST_ANNUAL_SALARY=TRIM(TO_CHAR(#{ordinary_hourly_wage}::numeric*8*365,'999,999,999,990'))
,STATUS=#{status}
where RATECAL_MGMT_OBJID = #{objid}::numeric
)
insert into RATECAL_MGMT
(
RATECAL_MGMT_OBJID
,POSITION
,USER_NAME
,YYYY
,ORDINARY_HOURLY_WAGE
,DAILY_WAGE
,EST_ANNUAL_SALARY
,REASON
,USER_ID
,REG_USER_ID
,REG_DATE
,STATUS
)
select
#{objid}::numeric
,#{position}
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = #{user_id})
,#{yyyy}
,TRIM(TO_CHAR(#{ordinary_hourly_wage}::numeric, '999,999,999,990'))
,TRIM(TO_CHAR(#{ordinary_hourly_wage}::numeric*8, '999,999,999,990'))
,TRIM(TO_CHAR(#{ordinary_hourly_wage}::numeric*8*365,'999,999,999,990'))
,#{reason}
,#{user_id}
,#{userId}
,now()
,#{status}
where not exists (
select
*
from RATECAL_MGMT
where RATECAL_MGMT_OBJID = #{objid}::numeric
)
</update>
<!-- <update id="mergeratecalMgmtInfo" parameterType="map">
MERGE INTO RATECAL_MGMT USING DUAL ON (RATECAL_MGMT_OBJID = #{objid})
WHEN MATCHED THEN
UPDATE SET
YYYY=#{yyyy}
,ORDINARY_HOURLY_WAGE=TRIM(TO_CHAR(#{ordinary_hourly_wage},'999,999,999,990'))
,DAILY_WAGE=TRIM(TO_CHAR(#{ordinary_hourly_wage}*8,'999,999,999,990'))
,EST_ANNUAL_SALARY=TRIM(TO_CHAR(#{ordinary_hourly_wage}*8*365,'999,999,999,990'))
,STATUS=#{status}
WHEN NOT MATCHED THEN
INSERT (
RATECAL_MGMT_OBJID
,POSITION
,USER_NAME
,YYYY
,ORDINARY_HOURLY_WAGE
,DAILY_WAGE
,EST_ANNUAL_SALARY
,REASON
,USER_ID
,REG_USER_ID
,REG_DATE
,STATUS
) VALUES (
#{objid}
,#{position}
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = #{user_id})
,#{yyyy}
,TRIM(TO_CHAR(#{ordinary_hourly_wage}, '999,999,999,990'))
,TRIM(TO_CHAR(#{ordinary_hourly_wage}*8, '999,999,999,990'))
,TRIM(TO_CHAR(#{ordinary_hourly_wage}*8*365,'999,999,999,990'))
,#{reason}
,#{user_id}
,#{userId}
,sysdate
,#{status}
)
</update> -->
<delete id="delOEMRelMilestone" parameterType="map">
DELETE OEM_MILESTONE_MNG WHERE OEM_OBJID = #{OEM_OBJID}
</delete>
<!-- 고객사에 해당하는 정보를 가져온다. -->
<update id="changeOEMStatus" parameterType="map">
UPDATE OEM_MNG SET STATUS = #{STATUS} WHERE OBJID = #{OEM_OBJID}
</update>
<!-- 공급업체에 상태 업데이트 -->
<update id="changeSupStatus" parameterType="map">
UPDATE ADMIN_SUPPLY_MNG SET STATUS = #{status} WHERE OBJID = #{objid}::numeric
</update>
<!-- 재질 관리 목록 -->
<select id="getMaterialMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT C.*, ROW_NUMBER() OVER (ORDER BY REGDATE DESC) RNUM
FROM (
SELECT C.*
FROM (
SELECT OBJID
, MATERIAL_NAME
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = A.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = A.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(A.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(A.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE A.STATUS
END AS STATUS_STR
FROM MATERIAL_MNG A
) C WHERE 1=1
<if test="search_materialName != null and search_materialName != ''">
AND UPPER(MATERIAL_NAME) LIKE UPPER('%${search_materialName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER(#{search_status})
</if>
) C 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_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</if>
</select>
<!-- 재질의 목록count를 가져온다. -->
<select id="getMaterialMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT C.*
FROM (
SELECT OBJID
, MATERIAL_NAME
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = A.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = A.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(A.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(A.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE A.STATUS
END AS STATUS_STR
FROM MATERIAL_MNG A
) C WHERE 1=1
<if test="search_materialName != null and search_materialName != ''">
AND UPPER(MATERIAL_NAME) LIKE UPPER('%${search_materialName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER(#{search_status})
</if>
) WHERE 1=1
) WHERE 1=1
</select>
<!-- 재질 단건 조회 -->
<select id="getMaterialInfo" parameterType="map" resultType="map">
SELECT OBJID,
MATERIAL_NAME,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM MATERIAL_MNG
WHERE OBJID = #{search_materialObjid} OR MATERIAL_NAME = #{search_materialName}
</select>
<!-- 재질 등록/수정 -->
<update id="mergeMaterial" parameterType="map">
MERGE INTO MATERIAL_MNG M USING DUAL on (M.OBJID = #{materialObjid})
WHEN MATCHED THEN
UPDATE
SET M.MATERIAL_NAME = #{materialName},
M.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
M.OBJID,
M.MATERIAL_NAME,
M.WRITER,
M.REGDATE,
M.STATUS
)
VALUES
(
#{materialObjid},
#{materialName},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- 재질의 상태전환 -->
<update id="updateMaterialStatus" parameterType="map">
UPDATE MATERIAL_MNG
SET STATUS = #{actionType}
WHERE OBJID = #{materialObjid}
</update>
<!-- 차량옵션 관리 목록 -->
<select id="getCarOptionMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT C.*, ROW_NUMBER() OVER(ORDER BY REGDATE DESC) RNUM
FROM(
SELECT C.*
FROM (
SELECT OBJID
, OPTION_NAME
, DECODE(DESCRIPTION, NULL, '설명없음', DESCRIPTION) DESCRIPTION
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = A.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = A.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(A.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(A.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE A.STATUS
END AS STATUS_STR
FROM OPTION_SPEC_MNG A
) C WHERE 1=1
<if test="search_optionName != null and search_optionName != ''">
AND UPPER(OPTION_NAME) LIKE UPPER('%${search_optionName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER(#{search_status})
</if>
) C 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_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</if>
</select>
<!-- 옵션의 목록count를 가져온다. -->
<select id="getCarOptionMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT C.*
FROM (
SELECT OBJID
, OPTION_NAME
, DECODE(DESCRIPTION, NULL, '설명없음', DESCRIPTION) DESCRIPTION
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = A.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = A.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(A.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(A.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE A.STATUS
END AS STATUS_STR
FROM OPTION_SPEC_MNG A
) C WHERE 1=1
<if test="search_optionName != null and search_optionName != ''">
AND UPPER(OPTION_NAME) LIKE UPPER('%${search_optionName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER(#{search_status})
</if>
) WHERE 1=1
) WHERE 1=1
</select>
<!-- 차량옵션 단건 조회 -->
<select id="getCarOptionInfo" parameterType="map" resultType="map">
SELECT OBJID,
OPTION_NAME,
DESCRIPTION,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM OPTION_SPEC_MNG
WHERE OBJID = #{search_optionObjid} OR OPTION_NAME = #{search_optionName}
</select>
<!-- 차량옵션 등록/수정 -->
<update id="mergeCarOption" parameterType="map">
MERGE INTO OPTION_SPEC_MNG M USING DUAL on (M.OBJID = #{optionObjid})
WHEN MATCHED THEN
UPDATE
SET M.OPTION_NAME = #{optionName},
M.DESCRIPTION = #{optionDescription},
M.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
M.OBJID,
M.OPTION_NAME,
M.DESCRIPTION,
M.WRITER,
M.REGDATE,
M.STATUS
)
VALUES
(
#{optionObjid},
#{optionName},
#{optionDescription},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- 차량옵션의 상태전환 -->
<update id="updateCarOptionStatus" parameterType="map">
UPDATE OPTION_SPEC_MNG
SET STATUS = #{actionType}
WHERE OBJID = #{optionObjid}
</update>
<!-- 기술자료 카테고리 목록을 가져온다. -->
<select id="getSpecDataCategoryList" parameterType="map" resultType="map">
WITH RECURSIVE v_STD_CATE(
objid,
parent_objid,
category_type,
use_car,
use_product,
use_revision,
use_doc_link,
use_compatition_car,
use_product_group,
doc_no_rule,
category_name,
seq,
spec_no,
writer,
spec_input_type,
regdate,
status,
use_manufacturer,
use_participation_date,
lev,
PATH,
cycle
) AS (
SELECT
STD_CATE_ORG.*,
1,
ARRAY [STD_CATE_ORG.objid],
false
FROM
STANDARD_DOC_CATEGORY STD_CATE_ORG
WHERE 1=1
and STD_CATE_ORG.CATEGORY_TYPE = 'high'
AND STD_CATE_ORG.OBJID IS NOT NULL
UNION ALL
select
STD_CATE.*,
v_STD_CATE.lev + 1,
PATH||STD_CATE.seq,
STD_CATE.objid = ANY(PATH)
from
STANDARD_DOC_CATEGORY STD_CATE
JOIN
v_STD_CATE
ON
STD_CATE.PARENT_OBJID = v_STD_CATE.OBJID
WHERE 1=1
)
select * from(
SELECT
A.*,
A.REGDATE ORG_REGDATE,
TO_CHAR(A.REGDATE,'YYYY-MM-DD') REGDATE_TITLE,
(SELECT DEPT_NAME FROM USER_INFO WHERE UPPER(USER_ID) = UPPER(A.writer)) AS DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE UPPER(USER_ID) = UPPER(A.writer)) AS user_name,
(SELECT CATEGORY_NAME FROM STANDARD_DOC_CATEGORY WHERE OBJID IS NOT NULL AND OBJID = A.PARENT_OBJID) PARENT_NAME,
(SELECT CATEGORY_TYPE FROM STANDARD_DOC_CATEGORY WHERE OBJID IS NOT NULL AND OBJID = A.PARENT_OBJID) PARENT_CATEGORY_TYPE,
(SELECT PARENT_OBJID FROM STANDARD_DOC_CATEGORY WHERE OBJID IS NOT NULL AND OBJID = A.PARENT_OBJID) PARENT_REL_OBJID
FROM v_STD_CATE A
WHERE OBJID IS NOT NULL
order by
PATH
) A where 1=1
<if test="REGDATE_FROM != null and REGDATE_FROM != ''">
AND TO_DATE(ORG_REGDATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{REGDATE_FROM}, 'YYYY-MM-DD')
</if>
<if test="REGDATE_TO != null and REGDATE_TO != ''">
AND TO_DATE(ORG_REGDATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{REGDATE_TO}, 'YYYY-MM-DD')
</if>
<if test="STATUS != '' and STATUS != null">
AND STATUS = #{STATUS}
</if>
<if test="CATEGORY_NAME != '' and CATEGORY_NAME != null">
AND CATEGORY_NAME LIKE '%${CATEGORY_NAME}%'
</if>
<if test="CATEGORY_TYPE != '' and CATEGORY_TYPE != null">
AND CATEGORY_TYPE = #{CATEGORY_TYPE}
</if>
<if test="WRITER != '' and WRITER != null">
AND (USER_NAME||WRITER) LIKE '%${WRITER}%'
</if>
</select>
<!-- <select id="getSpecDataCategoryList" parameterType="map" resultType="map">
SELECT T.*,
(SELECT CATEGORY_NAME FROM STANDARD_DOC_CATEGORY WHERE OBJID IS NOT NULL AND OBJID = T.PARENT_OBJID) PARENT_NAME,
(SELECT CATEGORY_TYPE FROM STANDARD_DOC_CATEGORY WHERE OBJID IS NOT NULL AND OBJID = T.PARENT_OBJID) PARENT_CATEGORY_TYPE,
(SELECT PARENT_OBJID FROM STANDARD_DOC_CATEGORY WHERE OBJID IS NOT NULL AND OBJID = T.PARENT_OBJID) PARENT_REL_OBJID
FROM
(
SELECT
LEVEL AS LEV,
OBJID,
PARENT_OBJID,
CATEGORY_TYPE,
USE_CAR,
USE_PRODUCT,
USE_REVISION,
USE_DOC_LINK,
DOC_NO_RULE,
CATEGORY_NAME,
SEQ,
SPEC_NO,
WRITER,
(SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = WRITER) DEPT_NAME,
(SELECT CASE WHEN USER_NAME = NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = WRITER) USER_NAME,
REGDATE ORG_REGDATE,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM STANDARD_DOC_CATEGORY STD_CATE START WITH STD_CATE.CATEGORY_TYPE = 'high' AND OBJID IS NOT NULL
CONNECT BY PRIOR STD_CATE.OBJID = STD_CATE.PARENT_OBJID
ORDER SIBLINGS BY SEQ ASC
)T
WHERE OBJID IS NOT NULL
<if test="REGDATE_FROM != null and REGDATE_FROM != ''">
AND TO_DATE(ORG_REGDATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{REGDATE_FROM}, 'YYYY-MM-DD')
</if>
<if test="REGDATE_TO != null and REGDATE_TO != ''">
AND TO_DATE(ORG_REGDATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{REGDATE_TO}, 'YYYY-MM-DD')
</if>
<if test="STATUS != '' and STATUS != null">
AND STATUS = #{STATUS}
</if>
<if test="CATEGORY_NAME != '' and CATEGORY_NAME != null">
AND CATEGORY_NAME LIKE '%${CATEGORY_NAME}%'
</if>
<if test="CATEGORY_TYPE != '' and CATEGORY_TYPE != null">
AND CATEGORY_TYPE = #{CATEGORY_TYPE}
</if>
<if test="WRITER != '' and WRITER != null">
AND (USER_NAME||WRITER) LIKE '%${WRITER}%'
</if>
</select> -->
<!-- 코드 목록을 가져온다. -->
<select id="getCodeDataCategoryList" parameterType="map" resultType="map">
WITH RECURSIVE V_CODE(
OBJID,
CODE_ID,
PARENT_CODE_ID,
CODE_NAME,
ID,
CODE_CD,
EXT_VAL,
WRITER,
REGDATE,
STATUS,
LEV,
PATH,
CYCLE,
PATH_NAME
) AS (
SELECT
CODE.*,
1,
ARRAY [CODE.CODE_ID::TEXT],
FALSE,
ARRAY [CODE.CODE_NAME]
FROM
COMM_CODE CODE
WHERE 1=1
<choose>
<when test="searchCode != null and !''.equals(searchCode)">
AND CODE.PARENT_CODE_ID = #{searchCode}
</when>
<otherwise>
AND (CODE.PARENT_CODE_ID IS NULL OR CODE.PARENT_CODE_ID = '')
</otherwise>
</choose>
UNION ALL
SELECT
ORG_CODE.*,
LEV + 1,
PATH||ORG_CODE.CODE_ID::TEXT,
ORG_CODE.CODE_ID = ANY(PATH),
PATH_NAME
FROM
COMM_CODE ORG_CODE
JOIN
V_CODE
ON
ORG_CODE.PARENT_CODE_ID = V_CODE.CODE_ID
WHERE 1=1
)
SELECT * FROM(
SELECT
OBJID,
CODE_ID,
EXT_VAL,
LPAD(' - ',(LEV-1)*5,' - ')||CODE_NAME AS CODE_NAME,
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = V.PARENT_CODE_ID AND CC.PARENT_CODE_ID = '') AS PARENT_CODE_NAME,
'' AS PATHNAME,
(
SELECT
CASE DEPT_NAME
WHEN NULL THEN '정보없음'
ELSE DEPT_NAME
END
FROM USER_INFO
WHERE USER_ID = V.WRITER
) AS DEPT_NAME,
(
SELECT
CASE USER_NAME
WHEN NULL THEN '정보없음'
ELSE USER_NAME
END
FROM USER_INFO
WHERE USER_ID = V.WRITER
) AS USER_NAME,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS,
PATH_NAME
FROM
V_CODE V
WHERE 1=1
ORDER BY
PATH,
CODE_ID
) T
WHERE 1=1
<if test="REGDATE_FROM != null and REGDATE_FROM != ''">
AND REGDATE <![CDATA[ >= ]]> TO_DATE(#{REGDATE_FROM}, 'YYYY-MM-DD')
</if>
<if test="REGDATE_TO != null and REGDATE_TO != ''">
AND REGDATE <![CDATA[ <= ]]> TO_DATE(#{REGDATE_TO}, 'YYYY-MM-DD')
</if>
<if test="STATUS != '' and STATUS != null">
AND STATUS = #{STATUS}
</if>
<if test="CODE_NAME != '' and CODE_NAME != null">
AND (CODE_NAME LIKE '%${CODE_NAME}%' or PARENT_CODE_NAME LIKE '%${CODE_NAME}%')
</if>
</select>
<!-- <select id="getCodeDataCategoryList" parameterType="map" resultType="map">
SELECT
OBJID,
CODE_ID,
LPAD(' - ',(LEVEL-1)*5,' - ')||CODE_NAME AS CODE_NAME,
SUBSTR(SYS_CONNECT_BY_PATH(CODE_NAME,'->'), 3) PATHNAME,
(SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = T.WRITER) DEPT_NAME,
(SELECT CASE WHEN USER_NAME = NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = T.WRITER) USER_NAME,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM COMM_CODE T
WHERE 1=1
<if test="REGDATE_FROM != null and REGDATE_FROM != ''">
AND TO_DATE(ORG_REGDATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{REGDATE_FROM}, 'YYYY-MM-DD')
</if>
<if test="REGDATE_TO != null and REGDATE_TO != ''">
AND TO_DATE(ORG_REGDATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{REGDATE_TO}, 'YYYY-MM-DD')
</if>
<if test="STATUS != '' and STATUS != null">
AND STATUS = #{STATUS}
</if>
<if test="CODE_NAME != '' and CODE_NAME != null">
AND CODE_NAME LIKE '%${CODE_NAME}%'
</if>
<if test="WRITER != '' and WRITER != null">
AND (USER_NAME||WRITER) LIKE '%${WRITER}%'
</if>
<choose>
<when test="searchCode != null and !''.equals(searchCode)">
START WITH CODE_ID = #{searchCode}
</when>
<otherwise>
START WITH PARENT_CODE_ID IS NULL
</otherwise>
</choose>
CONNECT BY PRIOR CODE_ID = PARENT_CODE_ID
ORDER SIBLINGS BY CODE_ID
</select> -->
<!-- 간단한 코드목록 가져오기 -->
<select id="getSimpleCodeDataCategoryList" parameterType="map" resultType="map">
SELECT
code_name
FROM COMM_CODE T
WHERE 1=1
</select>
<!-- 코드 fullpath -->
<select id="getCodeFullpathList" parameterType="map" resultType="map">
SELECT * FROM (
SELECT
OBJID,
CODE_ID,
SUBSTR(SYS_CONNECT_BY_PATH(CODE_ID, '‡'), 2) FULLID
FROM COMM_CODE T
WHERE 1=1
START WITH PARENT_CODE_ID IS NULL
CONNECT BY PRIOR CODE_ID = PARENT_CODE_ID) T
WHERE T.CODE_ID=#{searchCode}
</select>
<!-- 기술자료 카테고리 등록/수정 -->
<update id="mergeSpecDataCategory" parameterType="map">
INSERT INTO STANDARD_DOC_CATEGORY
(
objid,
parent_objid,
category_type,
doc_no_rule,
category_name,
seq,
writer,
regdate,
status,
use_car,
use_product,
use_revision,
use_doc_link,
use_compatition_car,
use_product_group,
spec_input_type
) VALUES (
#{objid}::numeric,
#{parentObjid}::numeric,
#{categoryType},
#{categoryDocName},
#{categoryName},
#{categorySeq}::numeric,
#{writer},
now(),
#{status},
#{car},
#{product},
#{revision},
#{changeFlag},
#{compatitionCar},
#{productGroup},
#{specInputType}
) ON CONFLICT (OBJID) DO
UPDATE
SET
parent_objid = #{parentObjid}::numeric,
category_type = #{categoryType},
doc_no_rule = #{categoryDocName},
category_name = #{categoryName},
seq = #{categorySeq}::numeric,
status = #{status},
use_car = #{car},
use_product = #{product},
use_revision = #{revision},
use_doc_link = #{changeFlag},
use_compatition_car = #{compatitionCar},
use_product_group = #{productGroup},
spec_input_type = #{specInputType}
</update>
<!-- <update id="mergeSpecDataCategory" parameterType="map">
MERGE INTO STANDARD_DOC_CATEGORY T USING DUAL ON (T.OBJID = #{objid})
WHEN MATCHED THEN
UPDATE
SET
T.PARENT_OBJID = #{parentObjid},
T.CATEGORY_TYPE = #{categoryType},
T.DOC_NO_RULE = #{categoryDocName},
T.CATEGORY_NAME = #{categoryName},
T.SEQ = #{categorySeq},
T.STATUS = #{status},
T.USE_CAR = #{car},
T.USE_PRODUCT = #{product},
T.USE_REVISION = #{revision},
T.USE_DOC_LINK = #{changeFlag},
T.USE_COMPATITION_CAR = #{compatitionCar},
T.USE_PRODUCT_GROUP = #{productGroup},
T.SPEC_INPUT_TYPE = #{specInputType}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.PARENT_OBJID,
T.CATEGORY_TYPE,
T.DOC_NO_RULE,
T.CATEGORY_NAME,
T.SEQ,
T.WRITER,
T.REGDATE,
T.STATUS,
T.USE_CAR,
T.USE_PRODUCT,
T.USE_REVISION,
T.USE_DOC_LINK,
T.USE_COMPATITION_CAR,
T.USE_PRODUCT_GROUP,
T.SPEC_INPUT_TYPE
)
VALUES
(
#{objid},
#{parentObjid},
#{categoryType},
#{categoryDocName},
#{categoryName},
#{categorySeq},
#{writer},
SYSDATE,
#{status},
#{car},
#{product},
#{revision},
#{changeFlag},
#{compatitionCar},
#{productGroup},
#{specInputType}
)
</update> -->
<!-- 공통코드 등록/수정 -->
<update id="mergeCodeDataCategory" parameterType="map">
INSERT INTO COMM_CODE
(
OBJID,
CODE_ID,
PARENT_CODE_ID,
CODE_NAME,
ID,
CODE_CD,
EXT_VAL,
WRITER,
REGDATE,
STATUS
)
VALUES
(
#{objid}::numeric,
LPAD(nextval('seq_comm_code')::varchar,7,'0'),
#{parentCodeId},
#{codeName},
#{id},
#{code_cd},
#{ext_val},
#{writer},
now(),
#{status}
) ON CONFLICT (OBJID) DO
UPDATE
SET
CODE_NAME = #{codeName},
EXT_VAL = #{ext_val},
STATUS = #{status}
</update>
<!-- <update id="mergeCodeDataCategory" parameterType="map">
MERGE INTO COMM_CODE T USING DUAL ON (T.OBJID = #{objid})
WHEN MATCHED THEN
UPDATE
SET
T.CODE_NAME = #{codeName},
T.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.CODE_ID,
T.PARENT_CODE_ID,
T.CODE_NAME,
T.ID,
T.CODE_CD,
T.EXT_VAL,
T.WRITER,
T.REGDATE,
T.STATUS
)
VALUES
(
#{objid},
LPAD((SELECT COUNT(*) FROM comm_code) + 1,7,'0'),
#{parentCodeId},
#{codeName},
#{id},
#{code_cd},
#{ext_val},
#{writer},
SYSDATE,
#{status}
)
</update> -->
<insert id="insertCodeDataCategoryHistory" parameterType="map">
INSERT INTO COMM_CODE_HISTORY
SELECT
#{objid}::numeric,
#{targetObjid}::numeric,
CODE_ID,
PARENT_CODE_ID,
CODE_NAME,
ID,
CODE_CD,
EXT_VAL,
#{writer},
NOW(),
STATUS
FROM COMM_CODE
WHERE OBJID = #{targetObjid}::numeric
</insert>
<select id="getDuplicateCodeCategogyInfo" parameterType="map" resultType="map">
SELECT
*
FROM COMM_CODE T
WHERE 1=1
<if test=" objid != '' and objid != null ">
AND OBJID != #{objid}::numeric
</if>
<if test=" parentCodeId != '' and parentCodeId != null ">
AND PARENT_CODE_ID = #{parentCodeId}
</if>
<if test=" codeName != '' and codeName != null ">
AND TRIM(UPPER(CODE_NAME)) = TRIM(UPPER(#{codeName}))
</if>
</select>
<!-- 기술자료 카테고리 삭제 -->
<delete id="deleteSpecDataCategory" parameterType="map">
DELETE STANDARD_DOC_CATEGORY WHERE OBJID = #{OBJID}
</delete>
<!-- 고객사에 해당하는 정보를 가져온다. -->
<update id="changeSpecDataCategoryStatus" parameterType="map">
UPDATE STANDARD_DOC_CATEGORY SET STATUS = #{STATUS} WHERE OBJID = #{OBJID}::numeric
</update>
<!-- 코드 상태값 변경 -->
<update id="changeCodeCategoryStatus" parameterType="map">
UPDATE COMM_CODE SET STATUS = #{STATUS} WHERE OBJID = #{OBJID}::numeric
</update>
<delete id="deleteCode" parameterType="map">
DELETE FROM COMM_CODE WHERE OBJID = #{OBJID}::NUMERIC
</delete>
<delete id="deleteSubCode" parameterType="map">
DELETE FROM COMM_CODE WHERE PARENT_CODE_ID = (SELECT CODE_ID FROM COMM_CODE WHERE OBJID = #{OBJID}::NUMERIC)
</delete>
<!-- 기술자료 카테고리 정보를 가져온다. -->
<select id="specCategoryBase" parameterType="map" resultType="map">
SELECT
OBJID,
PARENT_OBJID,
CATEGORY_TYPE,
USE_CAR,
USE_PRODUCT,
USE_REVISION,
USE_DOC_LINK,
DOC_NO_RULE,
CATEGORY_NAME,
SEQ,
SPEC_NO,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM STANDARD_DOC_CATEGORY
<where>
OBJID IS NOT NULL
</where>
</select>
<!-- 조건에 해당하는 기술자료 카테고리 정보를 가져온다. -->
<select id="getSpecCategoryBaseInfo" parameterType="map" resultType="map">
SELECT
OBJID,
PARENT_OBJID,
CATEGORY_TYPE,
USE_CAR,
USE_PRODUCT,
USE_REVISION,
USE_DOC_LINK,
USE_COMPATITION_CAR,
USE_PRODUCT_GROUP,
DOC_NO_RULE,
CATEGORY_NAME,
SEQ,
SPEC_NO,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
(SELECT PARENT_OBJID FROM STANDARD_DOC_CATEGORY WHERE OBJID = T.PARENT_OBJID) CATEGORY_HIGH_OBJID,
STATUS,
SPEC_INPUT_TYPE
FROM STANDARD_DOC_CATEGORY T
<where>
OBJID IS NOT NULL
</where>
<if test=" STATUS != '' and STATUS != null ">
AND STATUS = #{STATUS}
</if>
<if test=" CATEGORY_TYPE != '' and CATEGORY_TYPE != null ">
AND CATEGORY_TYPE = #{CATEGORY_TYPE}
</if>
<if test=" PARENT_OBJID != '' and PARENT_OBJID != null ">
AND PARENT_OBJID = #{PARENT_OBJID}::numeric
</if>
<if test=" CATEGORY_NAME != '' and CATEGORY_NAME != null ">
AND CATEGORY_NAME = #{CATEGORY_NAME}
</if>
<if test=" OBJID != '' and OBJID != null ">
AND OBJID = #{OBJID}::numeric
</if>
ORDER BY SEQ
</select>
<!-- 코드정보를 가져온다 -->
<select id="getCodeCategoryBaseInfo" parameterType="map" resultType="map">
WITH RECURSIVE V_CODE(
OBJID,
CODE_ID,
PARENT_CODE_ID,
CODE_NAME,
ID,
CODE_CD,
EXT_VAL,
WRITER,
REGDATE,
STATUS,
LEV,
PATH,
CYCLE,
PATH_NAME
) AS (
SELECT
CODE.*,
1,
ARRAY [CODE.CODE_ID],
FALSE,
ARRAY [CODE.CODE_NAME]
FROM
COMM_CODE CODE
WHERE 1=1
AND (CODE.PARENT_CODE_ID IS NULL OR CODE.PARENT_CODE_ID = '')
UNION ALL
SELECT
ORG_CODE.*,
LEV + 1,
PATH,
ORG_CODE.CODE_ID = ANY(PATH),
PATH_NAME
FROM
COMM_CODE ORG_CODE
JOIN
V_CODE
ON
ORG_CODE.PARENT_CODE_ID = V_CODE.CODE_ID
WHERE 1=1
)
SELECT
OBJID,
CODE_ID,
CODE_NAME,
PARENT_CODE_ID,
'' AS PATHNAME,
(
SELECT
CASE DEPT_NAME
WHEN NULL THEN '정보없음'
ELSE DEPT_NAME
END
FROM USER_INFO
WHERE USER_ID = V.WRITER
) AS DEPT_NAME,
(
SELECT
CASE USER_NAME
WHEN NULL THEN '정보없음'
ELSE USER_NAME
END
FROM USER_INFO
WHERE USER_ID = V.WRITER
) AS USER_NAME,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS,
PATH_NAME,
EXT_VAL
FROM
V_CODE V
WHERE 1=1
AND OBJID = #{OBJID}::numeric
ORDER BY
PATH,
LEV,
CODE_ID,
STATUS
</select>
<!-- <select id="getCodeCategoryBaseInfo" parameterType="map" resultType="map">
SELECT * FROM (
SELECT LEVEL AS LEV,
OBJID,
CODE_ID,
CODE_NAME,
T.PARENT_CODE_ID,
SUBSTR(SYS_CONNECT_BY_PATH(CODE_NAME, '‡'), 2) FULLNAME,
SUBSTR(SYS_CONNECT_BY_PATH(CODE_ID, '‡'), 2) FULLID,
(SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME)
FROM USER_INFO
WHERE USER_ID = T.WRITER) DEPT_NAME,
(SELECT CASE
WHEN USER_NAME = NULL THEN
'정보없음'
ELSE
USER_NAME
END
FROM USER_INFO
WHERE USER_ID = T.WRITER) USER_NAME,
TO_CHAR(REGDATE, 'YYYY-MM-DD') REGDATE,
STATUS,
CONNECT_BY_ROOT CODE_NAME AS ROOT_NAME
FROM COMM_CODE T
WHERE 1 = 1
AND T.OBJID = #{OBJID}
START WITH PARENT_CODE_ID IS NULL
CONNECT BY PRIOR CODE_ID = PARENT_CODE_ID
) T
</select> -->
<!-- 최상위 코드정보를 가져온다 -->
<select id="getTopCodeCategoryBaseInfo" parameterType="map" resultType="map">
WITH RECURSIVE V_CODE(
OBJID,
CODE_ID,
PARENT_CODE_ID,
CODE_NAME,
ID,
CODE_CD,
EXT_VAL,
WRITER,
REGDATE,
STATUS,
LEV,
PATH,
CYCLE,
PATH_NAME
) AS (
SELECT
CODE.*,
1,
ARRAY [CODE.CODE_ID],
FALSE,
ARRAY [CODE.CODE_NAME]
FROM
COMM_CODE CODE
WHERE 1=1
AND (CODE.PARENT_CODE_ID IS NULL OR CODE.PARENT_CODE_ID = '')
UNION ALL
SELECT
ORG_CODE.*,
LEV + 1,
PATH,
ORG_CODE.CODE_ID = ANY(PATH),
PATH_NAME
FROM
COMM_CODE ORG_CODE
JOIN
V_CODE
ON
ORG_CODE.PARENT_CODE_ID = V_CODE.CODE_ID
WHERE 1=1
)
SELECT
OBJID,
CODE_ID,
CODE_NAME,
'' AS PATHNAME,
(
SELECT
CASE DEPT_NAME
WHEN NULL THEN '정보없음'
ELSE DEPT_NAME
END
FROM USER_INFO
WHERE USER_ID = V.WRITER
) AS DEPT_NAME,
(
SELECT
CASE USER_NAME
WHEN NULL THEN '정보없음'
ELSE USER_NAME
END
FROM USER_INFO
WHERE USER_ID = V.WRITER
) AS USER_NAME,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS,
PATH_NAME
FROM
V_CODE V
WHERE 1=1
AND CODE_ID = #{codeid}
ORDER BY
PATH,
LEV,
CODE_ID,
STATUS
</select>
<!-- <select id="getTopCodeCategoryBaseInfo" parameterType="map" resultType="map">
SELECT *
FROM comm_code T
WHERE PARENT_CODE_ID IS NULL
START WITH CODE_ID = #{codeid}
CONNECT BY PRIOR PARENT_CODE_ID = CODE_ID
</select> -->
<!-- 적용사양 관리 목록 -->
<select id="getRegionMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM(
</if>
SELECT R.*, ROW_NUMBER() OVER(ORDER BY REGDATE DESC) RNUM
FROM (
SELECT R.*
FROM (
SELECT OBJID
, REGION_NAME
, DECODE(DESCRIPTION, NULL, '설명없음', DESCRIPTION) DESCRIPTION
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = R.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = R.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(R.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(R.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE R.STATUS
END AS STATUS_STR
FROM REGION_MNG R
) R WHERE 1=1
<if test="search_regionName != null and search_regionName != ''">
AND UPPER(REGION_NAME) LIKE UPPER('%${search_regionName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER(#{search_status})
</if>
) R 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_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</if>
</select>
<!-- 적용사양의 목록count를 가져온다. -->
<select id="getRegionMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT R.*
FROM (
SELECT OBJID
, REGION_NAME
, DECODE(DESCRIPTION, NULL, '설명없음', DESCRIPTION) DESCRIPTION
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = R.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = R.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(R.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(R.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE R.STATUS
END AS STATUS_STR
FROM REGION_MNG R
) R WHERE 1=1
<if test="search_regionName != null and search_regionName != ''">
AND UPPER(REGION_NAME) LIKE UPPER('%${search_regionName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER(#{search_status})
</if>
) WHERE 1=1
) WHERE 1=1
</select>
<!-- 적용사양 단건 조회 -->
<select id="getRegionInfo" parameterType="map" resultType="map">
SELECT OBJID,
REGION_NAME,
DESCRIPTION,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM REGION_MNG
WHERE OBJID = #{search_regionObjid} OR REGION_NAME = #{search_regionName}
</select>
<!-- 적용사양 등록/수정 -->
<update id="mergeRegion" parameterType="map">
MERGE INTO REGION_MNG R USING DUAL on (R.OBJID = #{regionObjid})
WHEN MATCHED THEN
UPDATE
SET R.REGION_NAME = #{regionName},
R.DESCRIPTION = #{regionDescription},
R.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
R.OBJID,
R.REGION_NAME,
R.DESCRIPTION,
R.WRITER,
R.REGDATE,
R.STATUS
)
VALUES
(
#{regionObjid},
#{regionName},
#{regionDescription},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- check된 적용사양의 상태전환 -->
<update id="updateRegionStatus" parameterType="map">
UPDATE REGION_MNG
SET STATUS = #{actionType}
WHERE OBJID = #{regionObjid}
</update>
<!-- 자재유형 관리 목록 -->
<select id="getMaterialTypeMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT C.*, ROW_NUMBER() OVER (ORDER BY REGDATE) RNUM
FROM(
SELECT C.*
FROM (
SELECT OBJID
, MATERIAL_TYPE_NAME
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = A.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = A.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(A.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(A.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE A.STATUS
END AS STATUS_STR
FROM MATERIAL_TYPE_MNG A
) C WHERE 1=1
<if test="search_materialTypeName != null and search_materialTypeName != ''">
AND UPPER(MATERIAL_TYPE_NAME) LIKE UPPER('%${search_materialTypeName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER(#{search_status})
</if>
) C 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_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</if>
</select>
<!-- 자재유형의 목록count를 가져온다. -->
<select id="getMaterialTypeMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT C.*
FROM (
SELECT OBJID
, MATERIAL_TYPE_NAME
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = A.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = A.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(A.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(A.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE A.STATUS
END AS STATUS_STR
FROM MATERIAL_TYPE_MNG A
) C WHERE 1=1
<if test="search_materialTypeName != null and search_materialTypeName != ''">
AND UPPER(MATERIAL_TYPE_NAME) LIKE UPPER('%${search_materialTypeName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER(#{search_status})
</if>
) WHERE 1=1
) WHERE 1=1
</select>
<!-- 자재유형 단건 조회 -->
<select id="getMaterialTypeInfo" parameterType="map" resultType="map">
SELECT OBJID,
MATERIAL_TYPE_NAME,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM MATERIAL_TYPE_MNG
WHERE OBJID = #{search_materialTypeObjid} OR MATERIAL_TYPE_NAME = #{search_materialTypeName}
</select>
<!-- 자재유형 등록/수정 -->
<update id="mergeMaterialType" parameterType="map">
MERGE INTO MATERIAL_TYPE_MNG M USING DUAL on (M.OBJID = #{materialTypeObjid})
WHEN MATCHED THEN
UPDATE
SET M.MATERIAL_TYPE_NAME = #{materialTypeName},
M.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
M.OBJID,
M.MATERIAL_TYPE_NAME,
M.WRITER,
M.REGDATE,
M.STATUS
)
VALUES
(
#{materialTypeObjid},
#{materialTypeName},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- check된 자재유형의 상태전환 -->
<update id="updateMaterialTypeStatus" parameterType="map">
UPDATE MATERIAL_TYPE_MNG
SET STATUS = #{actionType}
WHERE OBJID = #{materialTypeObjid}
</update>
<!-- 설계적용시점 관리 목록 -->
<select id="getApplyPointMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT C.*, ROW_NUMBER() OVER (ORDER BY REGDATE DESC) RNUM
FROM (
SELECT C.*
FROM (
SELECT OBJID
, APPLY_POINT_NAME
, DECODE(DESCRIPTION, NULL, '설명없음', DESCRIPTION) DESCRIPTION
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = A.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = A.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(A.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(A.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE A.STATUS
END AS STATUS_STR
FROM APPLY_POINT_MNG A
) C WHERE 1=1
<if test="search_applyPointName != null and search_applyPointName != ''">
AND UPPER(APPLY_POINT_NAME) LIKE UPPER('%${search_applyPointName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER(#{search_status})
</if>
) C 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_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</if>
</select>
<!-- 설계적용시점의 목록count를 가져온다. -->
<select id="getApplyPointMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT C.*
FROM (
SELECT OBJID
, APPLY_POINT_NAME
, DECODE(DESCRIPTION, NULL, '설명없음', DESCRIPTION) DESCRIPTION
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = A.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = A.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(A.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(A.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE A.STATUS
END AS STATUS_STR
FROM APPLY_POINT_MNG A
) C WHERE 1=1
<if test="search_applyPointName != null and search_applyPointName != ''">
AND UPPER(APPLY_POINT_NAME) LIKE UPPER('%${search_applyPointName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER(#{search_status})
</if>
) WHERE 1=1
) WHERE 1=1
</select>
<!-- 설계적용시점 단건 조회 -->
<select id="getApplyPointInfo" parameterType="map" resultType="map">
SELECT OBJID,
APPLY_POINT_NAME,
DESCRIPTION,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM APPLY_POINT_MNG
WHERE OBJID = #{search_applyPointObjid} OR APPLY_POINT_NAME = #{search_applyPointName}
</select>
<!-- 설계적용시점 등록/수정 -->
<update id="mergeApplyPoint" parameterType="map">
MERGE INTO APPLY_POINT_MNG A USING DUAL on (A.OBJID = #{applyPointObjid})
WHEN MATCHED THEN
UPDATE
SET A.APPLY_POINT_NAME = #{applyPointName},
A.DESCRIPTION = #{applyPointDescription},
A.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
A.OBJID,
A.APPLY_POINT_NAME,
A.DESCRIPTION,
A.WRITER,
A.REGDATE,
A.STATUS
)
VALUES
(
#{applyPointObjid},
#{applyPointName},
#{applyPointDescription},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- 설계적용시점의 상태전환 -->
<update id="updateApplyPointStatus" parameterType="map">
UPDATE APPLY_POINT_MNG
SET STATUS = #{actionType}
WHERE OBJID = #{applyPointObjid}
</update>
<!-- 제품군 관리 목록 -->
<select id="getProductGroupMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT C.*, ROW_NUMBER() OVER(ORDER BY REGDATE DESC) RNUM
FROM (
SELECT C.*
FROM (
SELECT OBJID
, PRODUCT_GROUP_NAME
, DECODE(DESCRIPTION, NULL, '설명없음', DESCRIPTION) DESCRIPTION
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = PG.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = PG.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(PG.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(PG.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE PG.STATUS
END AS STATUS_STR
FROM PRODUCT_GROUP_MNG PG
WHERE 1=1
) C WHERE 1=1
<if test="search_productGroupName != null and search_productGroupName != ''">
AND UPPER(PRODUCT_GROUP_NAME) LIKE UPPER('%${search_productGroupName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER('%${search_status}%')
</if>
) C 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_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</if>
</select>
<!-- 제품군의 목록count를 가져온다. -->
<select id="getProductGroupMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT C.*
FROM (
SELECT OBJID
, PRODUCT_GROUP_NAME
, DECODE(DESCRIPTION, NULL, '설명없음', DESCRIPTION) DESCRIPTION
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = PG.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = PG.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(PG.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(PG.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE PG.STATUS
END AS STATUS_STR
FROM PRODUCT_GROUP_MNG PG
WHERE 1=1
) C WHERE 1=1
<if test="search_productGroupName != null and search_productGroupName != ''">
AND UPPER(PRODUCT_GROUP_NAME) LIKE UPPER('%${search_productGroupName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER('%${search_status}%')
</if>
) WHERE 1=1
) WHERE 1=1
</select>
<!-- 제품군 관리 목록(페이징X) -->
<select id="getProductGroupList" parameterType="map" resultType="map">
SELECT *
FROM
(
SELECT ROWNUM RNUM
, OBJID
, PRODUCT_GROUP_NAME
, DECODE(DESCRIPTION, NULL, '설명없음', DESCRIPTION) DESCRIPTION
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = PG.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = PG.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(PG.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(PG.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE PG.STATUS
END AS STATUS_STR
FROM PRODUCT_GROUP_MNG PG
)
WHERE 1=1
<if test="productGroupName != null and productGroupName != ''">
AND PRODUCT_GROUP_NAME LIKE '%'||#{productGroupName}||'%'
</if>
<if test="writer != null and writer != ''">
AND DEPT_NAME LIKE '%'||#{writer}||'%'
</if>
<if test="fromDate != null and fromDate != ''">
AND TO_DATE(REGDATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{fromDate}, 'YYYY-MM-DD')
</if>
<if test="toDate != null and toDate != ''">
AND TO_DATE(REGDATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{toDate}, 'YYYY-MM-DD')
</if>
<if test="status != null and status != ''">
AND STATUS = #{status}
</if>
ORDER BY REGDATE
</select>
<!-- 제품군 단건 조회 -->
<select id="getProductGroupInfo" parameterType="map" resultType="map">
SELECT OBJID,
PRODUCT_GROUP_NAME,
DESCRIPTION,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM PRODUCT_GROUP_MNG
WHERE OBJID = #{search_productGroupObjid} OR PRODUCT_GROUP_NAME = #{search_productGroupName}
</select>
<!-- 제품군 등록/수정 -->
<update id="mergeProductGroup" parameterType="map">
MERGE INTO PRODUCT_GROUP_MNG PG USING DUAL on (PG.OBJID = #{productGroupObjid})
WHEN MATCHED THEN
UPDATE
SET PG.PRODUCT_GROUP_NAME = #{productGroupName},
PG.DESCRIPTION = #{productGroupDescription},
PG.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
PG.OBJID,
PG.PRODUCT_GROUP_NAME,
PG.DESCRIPTION,
PG.WRITER,
PG.REGDATE,
PG.STATUS
)
VALUES
(
#{productGroupObjid},
#{productGroupName},
#{productGroupDescription},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- 제품군의 상태전환 -->
<update id="updateProductGroupStatus" parameterType="map">
UPDATE PRODUCT_GROUP_MNG
SET STATUS = #{actionType}
WHERE OBJID = #{productGroupObjid}
</update>
<!-- 제품 관리 목록 -->
<select id="getProductMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT C.* , ROW_NUMBER() OVER(ORDER BY REGDATE_ORG DESC) RNUM
FROM(
SELECT C.*
FROM (
SELECT OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = P.PRODUCT_GROUP_OBJID) AS PRODUCT_GROUP_NAME
, PRODUCT_GROUP_OBJID
, PRODUCT_CODE
, PRODUCT_NAME
, DECODE(PRODUCT_DESC, NULL, '설명없음', PRODUCT_DESC) PRODUCT_DESC
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = P.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = P.WRITER) USER_NAME
, REGDATE REGDATE_ORG
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(P.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(P.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE P.STATUS
END AS STATUS_STR
FROM PRODUCT_MNG P
) C WHERE 1=1
<if test="search_productName != null and search_productName != ''">
AND UPPER(PRODUCT_NAME) LIKE UPPER('%${search_productName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER(#{search_status})
</if>
<if test="search_productGroupObjid != null and search_productGroupObjid != ''">
AND PRODUCT_GROUP_OBJID = #{search_productGroupObjid}
</if>
) C 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_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</if>
</select>
<!-- 제품의 목록count를 가져온다. -->
<select id="getProductMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT C.*
FROM (
SELECT OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = P.PRODUCT_GROUP_OBJID) AS PRODUCT_GROUP_NAME
, PRODUCT_GROUP_OBJID
, PRODUCT_CODE
, PRODUCT_NAME
, DECODE(PRODUCT_DESC, NULL, '설명없음', PRODUCT_DESC) PRODUCT_DESC
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = P.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = P.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(P.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(P.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE P.STATUS
END AS STATUS_STR
FROM PRODUCT_MNG P
) C WHERE 1=1
<if test="search_productName != null and search_productName != ''">
AND UPPER(PRODUCT_NAME) LIKE UPPER('%${search_productName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER(#{search_status})
</if>
<if test="search_productGroupObjid != null and search_productGroupObjid != ''">
AND PRODUCT_GROUP_OBJID = #{search_productGroupObjid}
</if>
)WHERE 1=1
) WHERE 1=1
</select>
<!-- 제품 관리 목록(페이징 X) -->
<select id="selectProductList" parameterType="map" resultType="map">
SELECT A.*, ROW_NUMBER() OVER (ORDER BY REGDATE_ORG DESC) RNUM
FROM
(
SELECT OBJID
, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = P.PRODUCT_GROUP_OBJID) AS PRODUCT_GROUP_NAME
, PRODUCT_GROUP_OBJID
, PRODUCT_CODE
, PRODUCT_NAME
, DECODE(PRODUCT_DESC, NULL, '설명없음', PRODUCT_DESC) PRODUCT_DESC
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = P.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = P.WRITER) USER_NAME
, REGDATE REGDATE_ORG
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(P.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(P.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE P.STATUS
END AS STATUS_STR
FROM PRODUCT_MNG P
) A WHERE 1=1
<if test="productName != null and productName != ''">
AND PRODUCT_NAME LIKE '%'||#{productName}||'%'
</if>
<if test="WRITER != null and WRITER != ''">
AND DEPT_NAME LIKE '%'||#{WRITER}||'%'
</if>
<if test="fromDate != null and fromDate != ''">
AND TO_DATE(REGDATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{fromDate}, 'YYYY-MM-DD')
</if>
<if test="toDate != null and toDate != ''">
AND TO_DATE(REGDATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{toDate}, 'YYYY-MM-DD')
</if>
<if test="status != null and status != ''">
AND STATUS = #{status}
</if>
<if test="productGroupObjid != null and productGroupObjid != ''">
AND PRODUCT_GROUP_OBJID = #{productGroupObjid}
</if>
</select>
<!-- 차종 관리 목록(페이징 X) -->
<select id="selectCarList" parameterType="map" resultType="map">
SELECT OBJID
, (SELECT OEM_CODE FROM OEM_MNG WHERE OBJID = CAR_MNG.OEM_OBJID) AS OEM_CODE
, (SELECT GRADE_NAME FROM CAR_GRADE_MNG WHERE OBJID = CAR_MNG.GRADE_OBJID) AS GRADE_NAME
, CAR_CODE
, MODEL_CODE
, CAR_NAME
, DESCRIPTION
, OEM_OBJID
FROM CAR_MNG
WHERE 1=1
AND UPPER(STATUS) = 'ACTIVE'
<if test="oemGroupObjid != null and oemGroupObjid != ''">
AND OEM_OBJID = #{oemGroupObjid}
</if>
</select>
<!-- 제품 단건 조회 -->
<select id="getProductInfo" parameterType="map" resultType="map">
SELECT OBJID,
(SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = P.PRODUCT_GROUP_OBJID) AS PRODUCT_GROUP_NAME,
PRODUCT_GROUP_OBJID,
PRODUCT_CODE,
PRODUCT_NAME,
PRODUCT_DESC,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM PRODUCT_MNG P
WHERE OBJID = #{search_productObjid} OR PRODUCT_NAME = #{search_productName}
</select>
<!-- 제품 등록/수정 -->
<update id="mergeProduct" parameterType="map">
MERGE INTO PRODUCT_MNG P USING DUAL on (P.OBJID = #{productObjid})
WHEN MATCHED THEN
UPDATE
SET P.PRODUCT_GROUP_OBJID = #{productGroupObjid},
P.PRODUCT_CODE = #{productCode},
P.PRODUCT_NAME = #{productName},
P.PRODUCT_DESC = #{productDescription},
P.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
P.OBJID,
P.PRODUCT_GROUP_OBJID,
P.PRODUCT_CODE,
P.PRODUCT_NAME,
P.PRODUCT_DESC,
P.WRITER,
P.REGDATE,
P.STATUS
)
VALUES
(
#{productObjid},
#{productGroupObjid},
#{productCode},
#{productName},
#{productDescription},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- 제품의 상태전환 -->
<update id="updateProductStatus" parameterType="map">
UPDATE PRODUCT_MNG
SET STATUS = #{actionType}
WHERE OBJID = #{productObjid}
</update>
<!-- 차종 관리 목록 -->
<select id="getCarMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM(
</if>
SELECT C.*, ROW_NUMBER() OVER(ORDER BY REGDATE DESC) RNUM
FROM(
SELECT C.*
FROM
(
SELECT OBJID::varchar
, CAR_CODE
, MODEL_CODE
, CAR_NAME
,CASE WHEN DESCRIPTION = ' ' THEN '설명없음'
ELSE DESCRIPTION
END AS DESCRIPTION
, GRADE_OBJID
, (SELECT CODE_NAME FROM COMM_CODE WHERE OBJID = C.GRADE_OBJID::integer) GRADE_NAME
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = C.OEM_OBJID) OEM_NAME
, OEM_OBJID
, (SELECT CASE WHEN DEPT_NAME IS NULL THEN '정보없음' ELSE DEPT_NAME END FROM USER_INFO WHERE USER_ID = C.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = C.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(C.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(C.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE C.STATUS
END AS STATUS_STR
FROM CAR_MNG AS C
) AS C WHERE 1=1
<if test="search_oemObjid != null and search_oemObjid != ''">
AND OEM_OBJID = #{search_oemObjid}::integer
</if>
<if test="search_carGradeObjid != null and search_carGradeObjid != ''">
AND GRADE_OBJID = #{search_carGradeObjid}
</if>
<if test="search_carName != null and search_carName != ''">
AND UPPER(CAR_NAME) LIKE UPPER('%${search_carName}%')
</if>
<if test="search_carCode != null and search_carCode != ''">
AND UPPER(CAR_CODE) LIKE UPPER('%${search_carCode}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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>
) AS C WHERE 1=1
<if test="'excel' != actionType">
) AS T WHERE 1=1
<if test="PAGE_END != null and PAGE_END != ''">
<![CDATA[ AND RNUM <= #{PAGE_END}::integer ]]>
</if>
<if test="PAGE_START != null and PAGE_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START}::integer ]]>
</if>
</if>
</select>
<!-- 차종의 목록count를 가져온다. -->
<select id="getCarMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(CAST(TOTAL_CNT AS FLOAT)/#{COUNT_PER_PAGE})::numeric::integer as MAX_PAGE_SIZE
,TOTAL_CNT::integer
FROM (
SELECT COUNT(1)::float TOTAL_CNT
FROM (
SELECT C.*
FROM (
SELECT OBJID::varchar
, CAR_CODE
, MODEL_CODE
, CAR_NAME
,CASE WHEN DESCRIPTION = ' ' THEN '설명없음'
ELSE DESCRIPTION
END AS DESCRIPTION
, GRADE_OBJID
, (SELECT CODE_NAME FROM COMM_CODE WHERE OBJID = C.GRADE_OBJID::integer) GRADE_NAME
, (SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = C.OEM_OBJID) OEM_NAME
, OEM_OBJID
, (SELECT CASE WHEN DEPT_NAME IS NULL THEN '정보없음' ELSE DEPT_NAME END FROM USER_INFO WHERE USER_ID = C.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = C.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(C.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(C.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE C.STATUS
END AS STATUS_STR
FROM CAR_MNG AS C
WHERE 1=1
) AS C WHERE 1=1
<if test="search_oemObjid != null and search_oemObjid != ''">
AND OEM_OBJID = #{search_oemObjid}::integer
</if>
<if test="search_carGradeObjid != null and search_carGradeObjid != ''">
AND GRADE_OBJID = #{search_carGradeObjid}
</if>
<if test="search_carName != null and search_carName != ''">
AND UPPER(CAR_NAME) LIKE UPPER('%${search_carName}%')
</if>
<if test="search_carCode != null and search_carCode != ''">
AND UPPER(CAR_CODE) LIKE UPPER('%${search_carCode}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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>
) AS T
) AS T1
</select>
<!-- 차종 단건 조회 -->
<select id="getCarInfo" parameterType="map" resultType="map">
SELECT OBJID::varchar,
CAR_CODE,
MODEL_CODE,
CAR_NAME,
DESCRIPTION,
GRADE_OBJID,
OEM_OBJID,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = C.OEM_OBJID) OEM_NAME,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM CAR_MNG C
WHERE 1=1
<if test=" search_carObjid != null and search_carObjid != '' ">
AND OBJID = #{search_carObjid}::integer
</if>
<if test=" search_carName != null and search_carName != '' ">
AND CAR_NAME = #{search_carName}
</if>
<if test=" search_carCode != null and search_carCode != '' ">
AND CAR_CODE = #{search_carCode}
</if>
</select>
<!-- 중복차종 정보 조회 -->
<select id="getDuplicateCarInfo" parameterType="map" resultType="map">
SELECT OBJID::varchar,
CAR_CODE,
MODEL_CODE,
CAR_NAME,
DESCRIPTION,
GRADE_OBJID,
OEM_OBJID::varchar,
(SELECT OEM_NAME FROM OEM_MNG WHERE OBJID = C.OEM_OBJID) OEM_NAME,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM CAR_MNG C
WHERE 1=1
<if test=" search_carObjid != null and search_carObjid != '' ">
AND OBJID IN (#{search_carObjid}::integer)
</if>
<if test=" search_carName != null and search_carName != '' ">
AND CAR_NAME = #{search_carName}
</if>
<if test=" search_modelCode != null and search_modelCode != '' ">
AND MODEL_CODE = #{search_modelCode}
</if>
<if test=" search_carCode != null and search_carCode != '' ">
AND CAR_CODE = #{search_carCode}
</if>
</select>
<!-- 차종 등록/수정 -->
<update id="mergeCar" parameterType="map">
INSERT INTO
CAR_MNG
(
OBJID,
CAR_CODE,
MODEL_CODE,
CAR_NAME,
DESCRIPTION,
GRADE_OBJID,
OEM_OBJID,
WRITER,
REGDATE,
STATUS
)
VALUES (
#{carObjid}::integer,
#{carCode},
#{modelCode},
#{carName},
#{carDescription},
#{carGradeObjid}::integer,
#{oemObjid}::integer,
#{writer},
now(),
#{carStatus}
) ON
CONFLICT (OBJID) DO
UPDATE
SET CAR_NAME = #{carName},
CAR_CODE = #{carCode},
MODEL_CODE = #{modelCode},
DESCRIPTION = #{carDescription},
GRADE_OBJID = #{carGradeObjid},
OEM_OBJID = #{oemObjid}::integer,
STATUS = #{carStatus}
</update>
<update id="mergeCarTFTLeader" parameterType="map">
with upsert as (
UPDATE
CAR_DISTRIBUTE_MEMBER
SET
IS_TFT_LEADER = 0
where
CAR_OBJID = #{carObjId}::numeric AND MEMBER_USER_ID = #{targetUserId}
)
INSERT INTO CAR_DISTRIBUTE_MEMBER(
OBJID,
CAR_OBJID,
MEMBER_USER_ID,
REGDATE,
STATUS,
IS_TFT_LEADER,
IS_PROJ_LEADER
)
select
#{objId}::numeric,
#{carObjId}::numeric,
#{targetUserId},
now(),
'active',
0,
1
where not exists (
select
*
from CAR_DISTRIBUTE_MEMBER
where CAR_OBJID = #{carObjId}::numeric AND MEMBER_USER_ID = #{targetUserId}
)
</update>
<!-- 차종의 TFT장/PL 정보를 초기화 한다. -->
<update id="resetCarMemberLeader" parameterType="map">
UPDATE CAR_DISTRIBUTE_MEMBER SET IS_TFT_LEADER = 1, IS_PROJ_LEADER = 1 WHERE CAR_OBJID = #{carObjId}::integer
</update>
<!-- 차종의 TFT장을 지정한다. -->
<update id="updateCarTFTLeader" parameterType="map">
UPDATE CAR_DISTRIBUTE_MEMBER SET IS_TFT_LEADER = 0 WHERE CAR_OBJID = #{carObjId} AND MEMBER_USER_ID = #{targetUserId}
</update>
<!-- 차종의 PL을 지정한다. -->
<update id="updateCarProjectLeader" parameterType="map">
UPDATE CAR_DISTRIBUTE_MEMBER SET IS_PROJ_LEADER = 0 WHERE CAR_OBJID = #{carObjId} AND MEMBER_USER_ID = #{targetUserId}
</update>
<!-- 차종의 상태전환 -->
<update id="updateCarStatus" parameterType="map">
UPDATE CAR_MNG
SET STATUS = #{actionType}
WHERE OBJID = #{carObjid}
</update>
<!-- Grade 관리 목록 -->
<select id="getCarGradeMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT C.*, ROW_NUMBER() OVER(ORDER BY REGDATE DESC) RNUM
FROM (
SELECT C.*
FROM (
SELECT OBJID
, GRADE_CODE
, GRADE_NAME
, DESCRIPTION
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = CG.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = CG.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(CG.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(CG.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE CG.STATUS
END AS STATUS_STR
FROM CAR_GRADE_MNG CG
) C WHERE 1=1
<if test="search_carGradeName != null and search_carGradeName != ''">
AND UPPER(GRADE_NAME) LIKE UPPER('%${search_carGradeName}%')
</if>
<if test="search_writer != null and search_writer != ''">
AND UPPER(USER_NAME) LIKE UPPER('%${search_writer}%')
</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) LIKE UPPER('%${search_status}%')
</if>
)C 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_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</if>
</select>
<!-- Grade의 목록count를 가져온다. -->
<select id="getCarGradeMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT C.*
FROM (
SELECT OBJID
, GRADE_CODE
, GRADE_NAME
, DESCRIPTION
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = CG.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = CG.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, CASE WHEN UPPER(CG.STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(CG.STATUS) = 'INACTIVE' THEN '비활성화'
ELSE CG.STATUS
END AS STATUS_STR
FROM CAR_GRADE_MNG CG
) C WHERE 1=1
<if test="search_carGradeName != null and search_carGradeName != ''">
AND GRADE_NAME LIKE '%'||#{search_carGradeName}||'%'
</if>
<if test="search_writer != null and search_writer != ''">
AND USER_NAME LIKE '%'||#{search_writer}||'%'
</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>
) WHERE 1=1
) WHERE 1=1
</select>
<!-- Grade 단건 조회 -->
<select id="getCarGradeInfo" parameterType="map" resultType="map">
SELECT OBJID,
GRADE_CODE,
GRADE_NAME,
DESCRIPTION,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM CAR_GRADE_MNG
WHERE OBJID = #{search_carGradeObjid} OR GRADE_NAME = #{search_carGradeName}
</select>
<!-- Grade 조회 -->
<select id="getCarGradeList" parameterType="map" resultType="map">
SELECT OBJID,
GRADE_CODE,
GRADE_NAME,
DESCRIPTION,
WRITER,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
STATUS
FROM CAR_GRADE_MNG
WHERE status = #{status}
<if test=" gradeObjid != '' and gradeObjid != null ">
AND OBJID = #{gradeObjid}
</if>
</select>
<!-- Grade 등록/수정 -->
<update id="mergeCarGrade" parameterType="map">
MERGE INTO CAR_GRADE_MNG CG USING DUAL on (CG.OBJID = #{carGradeObjid})
WHEN MATCHED THEN
UPDATE
SET CG.GRADE_CODE = #{carGradeCode},
CG.GRADE_NAME = #{carGradeName},
CG.DESCRIPTION = #{carGradeDescription},
CG.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
CG.OBJID,
CG.GRADE_CODE,
CG.GRADE_NAME,
CG.DESCRIPTION,
CG.WRITER,
CG.REGDATE,
CG.STATUS
)
VALUES
(
#{carGradeObjid},
#{carGradeCode},
#{carGradeName},
#{carGradeDescription},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- Grade의 상태전환 -->
<update id="updateCarGradeStatus" parameterType="map">
UPDATE CAR_GRADE_MNG
SET STATUS = #{actionType}
WHERE OBJID = #{carGradeObjid}
</update>
<!-- 고객사 마일스톤 단건 조회 -->
<select id="getOemMilestoneInfo" parameterType="map" resultType="map">
SELECT OBJID,
SEQ,
OEM_OBJID,
MILESTONE_NAME,
WRITER,
REGDATE,
STATUS
FROM OEM_MILESTONE_MNG
WHERE OBJID =#{search_oemMileObjid}
</select>
<!-- 차종 마일스톤 등록/수정 -->
<update id="mergeCarMilestone" parameterType="map">
INSERT INTO
CAR_MILESTONE_MNG
(
OBJID,
CAR_OBJID,
MILESTONE_OBJID,
MILESTONE_DATE,
WRITER,
REGDATE
)
VALUES (
#{carMileObjId}::integer,
#{carObjId}::integer,
#{oemMileObjId}::integer,
#{carMileDate},
#{writer},
now()
) ON
CONFLICT (MILESTONE_OBJID,CAR_OBJID) DO
UPDATE
SET MILESTONE_DATE=#{carMileDate}
</update>
<!-- 차종 마일스톤 목록 조회 -->
<select id="getCarMilestoneMngList" parameterType="map" resultType="map">
SELECT OBJID::varchar,
CAR_OBJID::varchar,
(SELECT SEQ FROM OEM_MILESTONE_MNG WHERE OBJID = CM.MILESTONE_OBJID) SEQ,
(SELECT MILESTONE_NAME FROM OEM_MILESTONE_MNG WHERE OBJID = CM.MILESTONE_OBJID) AS MILESTONE_NAME,
TO_CHAR(TO_DATE(MILESTONE_DATE,'YYYY-MM-DD'),'YYYY-MM-DD') AS MILESTONE_DATE,
(SELECT CASE WHEN DEPT_NAME IS NULL THEN '정보없음' ELSE DEPT_NAME END FROM USER_INFO WHERE USER_ID = CM.WRITER) DEPT_NAME,
(SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = CM.WRITER) USER_NAME,
REGDATE
FROM CAR_MILESTONE_MNG CM
WHERE CAR_OBJID = #{search_carObjid}::integer
ORDER BY SEQ
</select>
<!-- //로그인 로그 테이블 갯수 -->
<select id="selectLoginLogCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM (
SELECT
TO_CHAR(A.LOG_TIME, 'YYYY-MM-DD HH24:MI:SS') AS LOG_TIME
, LOG_TIME AS LOG_TIME_ORG
, A.SYSTEM_NAME
, UPPER(A.USER_ID) AS USER_ID
, (SELECT DEPT_NAME FROM USER_INFO WHERE UPPER(USER_ID) = UPPER(A.USER_ID)) AS DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE UPPER(USER_ID) = UPPER(A.USER_ID)) AS USER_NAME
, CASE LOGIN_RESULT::integer
when 1 then '성공'
when 0 then '실패'
else LOGIN_RESULT
end LOGIN_RESULT
, ERROR_MESSAGE
, REMOTE_ADDR
FROM LOGIN_ACCESS_LOG A
WHERE 1=1
AND SYSTEM_NAME = #{systemName}
) A
WHERE 1=1
<if test="search_deptName != null and !''.equals(search_deptName)">
AND UPPER(DEPT_NAME) LIKE UPPER('%${search_deptName}%')
</if>
<if test="search_userName != null and !''.equals(search_userName)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_userName}%')
</if>
<if test="search_fromDate != null and !''.equals(search_fromDate)">
AND to_char(LOG_TIME_ORG, 'YYYY-MM-DD')::date <![CDATA[ >= ]]> to_char(to_timestamp(#{search_fromDate},'YYYY-MM-DD'), 'YYYY-MM-DD')::date
</if>
<if test="search_toDate != null and !''.equals(search_toDate)">
AND to_char(LOG_TIME_ORG, 'YYYY-MM-DD')::date <![CDATA[ <= ]]> to_char(to_timestamp(#{search_toDate},'YYYY-MM-DD'), 'YYYY-MM-DD')::date
</if>
) A
</select>
<!-- //로그인 로그 목록 조회 -->
<select id="selectLoginLogList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT A.*
FROM
(
</if>
SELECT ROW_NUMBER() OVER(ORDER BY LOG_TIME_ORG DESC) AS RNUM, AA.*
FROM (
SELECT TO_CHAR(A.LOG_TIME, 'YYYY-MM-DD HH24:MI:SS') AS LOG_TIME
, LOG_TIME AS LOG_TIME_ORG
, A.SYSTEM_NAME
, UPPER(A.USER_ID) AS USER_ID
, (SELECT DEPT_NAME FROM USER_INFO WHERE UPPER(USER_ID) = UPPER(A.USER_ID)) AS DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE UPPER(USER_ID) = UPPER(A.USER_ID)) AS USER_NAME
, case LOGIN_RESULT
WHEN 'true' THEN '성공'
WHEN 'false' THEN '실패'
else CAST(LOGIN_RESULT AS varchar)
END LOGIN_RESULT
, ERROR_MESSAGE
, REMOTE_ADDR
FROM LOGIN_ACCESS_LOG A
WHERE 1=1
AND SYSTEM_NAME = #{systemName}
) AA
WHERE 1=1
<if test="search_deptName != null and !''.equals(search_deptName)">
AND UPPER(DEPT_NAME) LIKE UPPER('%${search_deptName}%')
</if>
<if test="search_userName != null and !''.equals(search_userName)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_userName}%')
</if>
<if test="search_fromDate != null and !''.equals(search_fromDate)">
AND to_char(LOG_TIME_ORG, 'YYYY-MM-DD')::date <![CDATA[ >= ]]> to_char(to_timestamp(#{search_fromDate},'YYYY-MM-DD'), 'YYYY-MM-DD')::date
</if>
<if test="search_toDate != null and !''.equals(search_toDate)">
AND to_char(LOG_TIME_ORG, 'YYYY-MM-DD')::date <![CDATA[ <= ]]> to_char(to_timestamp(#{search_toDate},'YYYY-MM-DD'), 'YYYY-MM-DD')::date
</if>
<if test="'excel' != actionType">
) A
WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</if>
</select>
<!-- //파일 다운로드 로그 테이블 갯수 -->
<select id="selectFileDownloadLogCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM (
SELECT A.OBJID
, (SELECT DOC_TYPE FROM ATTACH_FILE_INFO S WHERE S.OBJID = A.FILE_OBJID) AS DOC_TYPE
, (SELECT DOC_TYPE_NAME FROM ATTACH_FILE_INFO S WHERE S.OBJID = A.FILE_OBJID) AS DOC_TYPE_NAME
, (SELECT REAL_FILE_NAME FROM ATTACH_FILE_INFO S WHERE S.OBJID = A.FILE_OBJID) AS REAL_FILE_NAME
, A.USER_ID
, (SELECT USER_NAME FROM USER_INFO S WHERE S.USER_ID = A.USER_ID) AS USER_NAME
, (SELECT USER_NAME_ENG FROM USER_INFO S WHERE S.USER_ID = A.USER_ID) AS USER_NAME_ENG
, (SELECT USER_NAME_CN FROM USER_INFO S WHERE S.USER_ID = A.USER_ID) AS USER_NAME_CN
, (SELECT DEPT_NAME FROM USER_INFO S WHERE S.USER_ID = A.USER_ID) AS DEPT_NAME
, (SELECT POSITION_NAME FROM USER_INFO S WHERE S.USER_ID = A.USER_ID) AS POSITION_NAME
, TO_CHAR(A.LOG_TIME, 'YYYY-MM-DD HH24:MI:SS') AS LOG_TIME
, A.LOG_TIME LOG_TIME_ORG
, CASE WHEN A.REMOTE_ADDR = '0:0:0:0:0:0:0:1' THEN 'Local' ELSE A.REMOTE_ADDR END AS REMOTE_ADDR
FROM FILE_DOWN_LOG A
WHERE 1=1
AND SYSTEM_NAME = #{systemName}
) A
WHERE 1=1
<if test="search_deptName != null and !''.equals(search_deptName)">
AND UPPER(DEPT_NAME) LIKE UPPER('%${search_deptName}%')
</if>
<if test="search_userName != null and !''.equals(search_userName)">
AND UPPER(USEr_NAME) LIKE UPPER('%${search_userName}%')
</if>
<if test="search_fromDate != null and !''.equals(search_fromDate)">
AND to_char(LOG_TIME_ORG, 'YYYY-MM-DD')::date <![CDATA[ >= ]]> to_char(to_timestamp(#{search_fromDate},'YYYY-MM-DD'), 'YYYY-MM-DD')::date
</if>
<if test="search_toDate != null and !''.equals(search_toDate)">
AND to_char(LOG_TIME_ORG, 'YYYY-MM-DD')::date <![CDATA[ <= ]]> to_char(to_timestamp(#{search_toDate},'YYYY-MM-DD'), 'YYYY-MM-DD')::date
</if>
) A
</select>
<!-- //파일 다운로드 로그 목록 조회 -->
<select id="selectFileDownloadLogList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM
(
</if>
SELECT ROW_NUMBER() OVER(ORDER BY LOG_TIME_ORG DESC) AS RNUM, AA.*
FROM (
SELECT A.OBJID
, (SELECT DOC_TYPE FROM ATTACH_FILE_INFO S WHERE S.OBJID = A.FILE_OBJID) AS DOC_TYPE
, (SELECT DOC_TYPE_NAME FROM ATTACH_FILE_INFO S WHERE S.OBJID = A.FILE_OBJID) AS DOC_TYPE_NAME
, (SELECT REAL_FILE_NAME FROM ATTACH_FILE_INFO S WHERE S.OBJID = A.FILE_OBJID) AS REAL_FILE_NAME
, A.USER_ID
, (SELECT USER_NAME FROM USER_INFO S WHERE S.USER_ID = A.USER_ID) AS USER_NAME
, (SELECT USER_NAME_ENG FROM USER_INFO S WHERE S.USER_ID = A.USER_ID) AS USER_NAME_ENG
, (SELECT USER_NAME_CN FROM USER_INFO S WHERE S.USER_ID = A.USER_ID) AS USER_NAME_CN
, (SELECT DEPT_NAME FROM USER_INFO S WHERE S.USER_ID = A.USER_ID) AS DEPT_NAME
, (SELECT POSITION_NAME FROM USER_INFO S WHERE S.USER_ID = A.USER_ID) AS POSITION_NAME
, TO_CHAR(A.LOG_TIME, 'YYYY-MM-DD HH24:MI:SS') AS LOG_TIME
, TO_CHAR(A.LOG_TIME, 'YYYY-MM-DD') AS LOG_DATE
, A.LOG_TIME LOG_TIME_ORG
, CASE WHEN A.REMOTE_ADDR = '0:0:0:0:0:0:0:1' THEN 'Local' ELSE A.REMOTE_ADDR END AS REMOTE_ADDR
FROM FILE_DOWN_LOG A
WHERE 1=1
AND SYSTEM_NAME = #{systemName}
) AA
WHERE 1=1
<if test="search_realFileName != null and !''.equals(search_realFileName)">
AND UPPER(REAL_FILE_NAME) LIKE UPPER('%${search_realFileName}%')
</if>
<if test="search_userName != null and !''.equals(search_userName)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_userName}%')
</if>
<if test="search_fromDate != null and !''.equals(search_fromDate)">
AND to_char(LOG_TIME_ORG, 'YYYY-MM-DD')::date <![CDATA[ >= ]]> to_char(to_timestamp(#{search_fromDate},'YYYY-MM-DD'), 'YYYY-MM-DD')::date
</if>
<if test="search_toDate != null and !''.equals(search_toDate)">
AND to_char(LOG_TIME_ORG, 'YYYY-MM-DD')::date <![CDATA[ <= ]]> to_char(to_timestamp(#{search_toDate},'YYYY-MM-DD'), 'YYYY-MM-DD')::date
</if>
<if test="'excel' != actionType">
)
WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</if>
</select>
<!-- //메일발송 로그 테이블 갯수 -->
<select id="selectMailLogCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT
COUNT(1) TOTAL_CNT
FROM (
SELECT TO_CHAR(A.LOG_TIME, 'YYYY-MM-DD HH24:MI:SS') AS LOG_TIME
, A.OBJID
, LOG_TIME AS LOG_TIME_ORG
, A.SYSTEM_NAME
, A.SEND_USER_ID
, A.RECEPTION_USER_ID
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.SEND_USER_ID) AS SENDER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.SEND_USER_ID) AS SENDER_USER_NAME
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.RECEPTION_USER_ID) AS RECEIVER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.RECEPTION_USER_ID) AS RECEIVER_USER_NAME
, A.TITLE
FROM MAIL_LOG A
WHERE 1=1
AND SYSTEM_NAME = #{systemName}
)
WHERE 1=1
<if test="search_senderName != null and !''.equals(search_senderName)">
AND UPPER(SENDER_USER_NAME) LIKE UPPER('%${search_senderName}%')
</if>
<if test="search_receiverName != null and !''.equals(search_receiverName)">
AND UPPER(RECEIVER_USER_NAME) LIKE UPPER('%${search_receiverName}%')
</if>
<if test="search_fromDate != null and !''.equals(search_fromDate)">
AND LOG_TIME_ORG <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'yyyy-mm-dd')
</if>
<if test="search_toDate != null and !''.equals(search_toDate)">
AND LOG_TIME_ORG <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'yyyy-mm-dd')
</if>
)
</select>
<!-- //메일발송 로그 목록 조회 -->
<select id="selectMailLogList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM
(
</if>
SELECT ROW_NUMBER() OVER(ORDER BY LOG_TIME_ORG DESC) AS RNUM, AA.*
FROM (
SELECT TO_CHAR(A.LOG_TIME, 'YYYY-MM-DD HH24:MI:SS') AS LOG_TIME
, A.OBJID
, LOG_TIME AS LOG_TIME_ORG
, A.SYSTEM_NAME
, A.SEND_USER_ID
, A.RECEPTION_USER_ID
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.SEND_USER_ID) AS SENDER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.SEND_USER_ID) AS SENDER_USER_NAME
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.RECEPTION_USER_ID) AS RECEIVER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.RECEPTION_USER_ID) AS RECEIVER_USER_NAME
, A.TITLE
FROM MAIL_LOG A
WHERE 1=1
AND SYSTEM_NAME = #{systemName}
) AA
WHERE 1=1
<if test="search_senderName != null and !''.equals(search_senderName)">
AND UPPER(SENDER_USER_NAME) LIKE UPPER('%${search_senderName}%')
</if>
<if test="search_receiverName != null and !''.equals(search_receiverName)">
AND UPPER(RECEIVER_USER_NAME) LIKE UPPER('%${search_receiverName}%')
</if>
<if test="search_fromDate != null and !''.equals(search_fromDate)">
AND LOG_TIME_ORG <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'yyyy-mm-dd')
</if>
<if test="search_toDate != null and !''.equals(search_toDate)">
AND LOG_TIME_ORG <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'yyyy-mm-dd')
</if>
<if test="'excel' != actionType">
)
WHERE 1=1
AND <![CDATA[ RNUM <= #{PAGE_END} ]]>
AND <![CDATA[ RNUM >= #{PAGE_START}]]>
</if>
</select>
<!-- 메일에 발송된 내용을 가져온다. -->
<select id="selectMailSendContents" parameterType="map" resultType="map">
SELECT TO_CHAR(A.LOG_TIME, 'YYYY-MM-DD HH24:MI:SS') AS LOG_TIME
, A.OBJID
, LOG_TIME AS LOG_TIME_ORG
, A.SYSTEM_NAME
, A.SEND_USER_ID
, A.RECEPTION_USER_ID
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.SEND_USER_ID) AS SENDER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.SEND_USER_ID) AS SENDER_USER_NAME
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = A.RECEPTION_USER_ID) AS RECEIVER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = A.RECEPTION_USER_ID) AS RECEIVER_USER_NAME
, A.TITLE
, A.CONTENTS
FROM MAIL_LOG A
WHERE OBJID = #{objId}
</select>
<!-- 차량 마일스톤 리스트를 삭제 -->
<delete id="deleteCarMilestoneList" parameterType="map">
DELETE FROM CAR_MILESTONE_MNG WHERE CAR_OBJID = #{search_carObjid}
</delete>
<!-- 고객사에 따른 차종의 목록을 가져온다. -->
<select id="getOEMsCarList" parameterType="map" resultType="map">
SELECT OBJID,
CAR_CODE,
MODEL_CODE,
CAR_NAME,
DESCRIPTION,
GRADE_OBJID,
WRITER,
REGDATE,
STATUS,
OEM_OBJID
FROM CAR_MNG
WHERE 1=1
<if test=" oemObjId != '' and oemObjId != null and oemObjId != 'All' ">
AND OEM_OBJID = #{oemObjId}
</if>
<if test=" status != '' and status != null ">
AND STATUS = #{status}
</if>
</select>
<!-- 배포처를 등록할 인원을 가져온다. -->
<select id="getUserInfo" parameterType="map" resultType="map">
SELECT SABUN,
USER_ID,
USER_PASSWORD,
USER_NAME,
USER_NAME_ENG,
USER_NAME_CN,
DEPT_CODE,
DEPT_NAME,
TEL,
CELL_PHONE,
USER_TYPE,
USER_TYPE_NAME,
REGDATE
FROM USER_INFO
WHERE 1=1
<if test=" search_sabun != '' and search_sabun != null ">
AND USER_ID LIKE '%${search_sabun}%'
</if>
<if test=" search_name != '' and search_name != null ">
AND USER_NAME LIKE '%${search_name}%'
</if>
</select>
<!-- 배포처를 등록/수정한다. -->
<update id="mergeDistribution" parameterType="map">
INSERT INTO
CAR_DISTRIBUTE_MEMBER
(
OBJID,
CAR_OBJID,
MEMBER_USER_ID,
REGDATE,
STATUS
)
VALUES (
#{carDistributeObjid}::integer,
#{carObjid}::integer,
#{userId},
now(),
#{status}
) ON
CONFLICT (CAR_OBJID,MEMBER_USER_ID) DO
UPDATE
SET STATUS=#{status}
,REGDATE=now()
</update>
<!-- 배포처에서 인원을 삭제한다. -->
<delete id="deleteDistributeMember" parameterType="map">
DELETE CAR_DISTRIBUTE_MEMBER WHERE CAR_OBJID = #{carObjid} AND MEMBER_USER_ID = #{userId}
</delete>
<!-- 등록한 배포처 목록을 가져온다. -->
<select id="getCarDistributeMngList" parameterType="map" resultType="map">
SELECT OBJID::varchar,
CAR_OBJID::varchar,
MEMBER_SABUN,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = CDM.MEMBER_USER_ID) AS DEPT_NAME,
(SELECT DEPT_CODE FROM USER_INFO WHERE USER_ID = CDM.MEMBER_USER_ID) AS DEPT_CODE,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CDM.MEMBER_USER_ID) AS USER_NAME,
(SELECT POSITION_NAME FROM USER_INFO WHERE USER_ID = CDM.MEMBER_USER_ID) AS POSITION_NAME,
(SELECT EMAIL FROM USER_INFO WHERE USER_ID = CDM.MEMBER_USER_ID) AS EMAIL,
(SELECT USER_TYPE_NAME FROM USER_INFO WHERE USER_ID = CDM.MEMBER_USER_ID) AS USER_TYPE_NAME,
MEMBER_USER_ID,
REGDATE,
STATUS,
CASE WHEN STATUS='create' THEN '작성중' ELSE '배포완료' END AS STATUS_TITLE,
IS_TFT_LEADER::varchar,
IS_PROJ_LEADER::varchar
FROM CAR_DISTRIBUTE_MEMBER CDM
WHERE CAR_OBJID = #{search_carObjid}::integer
</select>
<!-- 배포처를 삭제한다. -->
<delete id="deleteCarDistribute" parameterType="map">
DELETE FROM CAR_DISTRIBUTE_MEMBER WHERE CAR_OBJID = #{search_carObjid}
</delete>
<!-- //oem code, name 중복체크 -->
<select id="selectSameOEMCodeAndNameCnt" parameterType="map" resultType="map">
SELECT (SELECT COUNT(*) FROM OEM_MNG WHERE OEM_CODE = #{oemCode} AND OBJID != #{objId}) AS SAME_OEM_CODE_CNT
, (SELECT COUNT(*) FROM OEM_MNG WHERE OEM_NAME = #{oemName} AND OBJID != #{objId}) AS SAME_OEM_NAME_CNT
FROM DUAL
</select>
<!-- //milestone 삭제 -->
<delete id="deleteOEMMilestoneInfo" parameterType="map">
DELETE FROM OEM_MILESTONE_MNG WHERE OBJID = ${targetObjId}
</delete>
<!-- 공급업체별 지정된 담당자의 정보를 가져온다. -->
<select id="getSupplyChargerList" parameterType="map" resultType="map">
SELECT
ROW_NUMBER() OVER(ORDER BY REGDATE DESC) RNUM,
OBJID,
CHARGER_TYPE,
SUPPLY_OBJID,
CHARGER_NAME,
PHONE,
TEL,
FAX,
EMAIL,
WRITER,
REGDATE,
TO_CHAR(REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE
FROM
SUPPLY_CHARGER_MNG
where SUPPLY_OBJID = #{supply_objid}
</select>
<!-- //신규 milestone 등록 -->
<insert id="addNewOEMMilestoneInfo" parameterType="map">
INSERT INTO OEM_MILESTONE_MNG(OBJID, SEQ, OEM_OBJID, MILESTONE_NAME, WRITER, REGDATE, STATUS) VALUES (
${objId}::integer
, #{mSeq}
, #{oemObjid}::integer
, #{mName}
, #{writer}
, now()
, #{mStatus}
)
</insert>
<!-- //milestone 수정 -->
<update id="modifyOEMMilestoneInfo" parameterType="map">
UPDATE OEM_MILESTONE_MNG SET SEQ = #{mSeq}, MILESTONE_NAME = #{mName}, STATUS = #{mStatus} WHERE OBJID = #{objId}
</update>
<!-- 검사명 관리 목록 -->
<select id="getTestTypeList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT C.*, ROW_NUMBER() OVER (ORDER BY REGDATE DESC) RNUM
FROM (
SELECT OBJID
, TEST_TYPE_NAME
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM TEST_TYPE_MNG
WHERE 1=1
<if test="search_testTypeName != null and search_testTypeName != ''">
AND UPPER(TEST_TYPE_NAME) LIKE UPPER('%${search_testTypeName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
) C 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_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</if>
</select>
<!-- 검사명 관리 목록 갯수 -->
<select id="getTestTypeListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT OBJID
, TEST_TYPE_NAME
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM TEST_TYPE_MNG
WHERE 1=1
<if test="search_testTypeName != null and search_testTypeName != ''">
AND UPPER(TEST_TYPE_NAME) LIKE UPPER('%${search_testTypeName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
) WHERE 1=1
) WHERE 1=1
</select>
<!-- //검사명 상세(Form, Detail) -->
<select id="getTestTypeInfo" parameterType="map" resultType="map">
SELECT OBJID
, TEST_TYPE_NAME
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM TEST_TYPE_MNG
WHERE 1=1
AND OBJID = #{objId}
</select>
<!-- //검사명 중복체크 -->
<select id="checkDuplicateTestTypeName" parameterType="map" resultType="map">
SELECT COUNT(*) CNT
FROM TEST_TYPE_MNG
WHERE 1=1
AND TEST_TYPE_NAME = #{testTypeName}
</select>
<!-- //검사명 저장 -->
<update id="saveTestTypeInfo" parameterType="map">
MERGE INTO TEST_TYPE_MNG T USING DUAL ON ( T.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET T.TEST_TYPE_NAME = #{testTypeName},
T.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.TEST_TYPE_NAME,
T.WRITER,
T.REGDATE,
T.STATUS
)
VALUES
(
#{objId},
#{testTypeName},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- //검사명 상태 수정 -->
<update id="changeTestTypeStatus" parameterType="map">
UPDATE TEST_TYPE_MNG SET STATUS = #{status} WHERE OBJID = #{objId}
</update>
<!-- //부서 상태 수정 -->
<update id="changeDeptStatus" parameterType="map">
UPDATE DEPT_INFO SET STATUS = #{status}
WHERE DEPT_CODE = #{dept_code}
</update>
<insert id="saveDeptHistoryInfo" parameterType="map">
INSERT INTO DEPT_INFO_HISTORY
(
DEPT_CODE,
OLD_DATA,
NEW_DATA,
REG_DATE
) VALUES (
#{dept_code},
(SELECT STATUS FROM DEPT_INFO WHERE DEPT_CODE = #{dept_code}),
#{status},
now()
)
</insert>
<!-- //부서 목록 조회 -->
<select id="getEtcDeptList" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT A.*, ROW_NUMBER() OVER (ORDER BY DEPT_CODE ASC) RNUM
FROM (
SELECT DEPT_CODE
, PARENT_DEPT_CODE
, COMPANY_NAME
, DEPT_NAME
, MASTER_SABUN
, MASTER_USER_ID
, LOCATION
, LOCATION_NAME
, REGDATE REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, DATA_TYPE
, STATUS
FROM DEPT_INFO
WHERE 1=1
<!-- ETC 숨김 -->
<!-- AND DATA_TYPE = 'etc' -->
<if test="search_locationName != null and !''.equals(search_locationName)">
AND UPPER(LOCATION_NAME) LIKE UPPER('%${search_locationName}%')
</if>
<if test="search_deptName != null and !''.equals(search_deptName)">
AND UPPER(DEPT_NAME) LIKE UPPER('%${search_deptName}%')
</if>
) A
WHERE 1=1
) A
WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</select>
<!-- //부서 목록 COUNT -->
<select id="getEtcDeptListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM DEPT_INFO
WHERE 1=1
<!-- etc 숨김 -->
<!-- AND DATA_TYPE = 'etc' -->
<!-- <if test="search_locationName != null and !''.equals(search_locationName)">
AND UPPER(LOCATION_NAME) LIKE UPPER('%${search_locationName}%')
</if> -->
<if test="search_deptName != null and !''.equals(search_deptName)">
AND UPPER(DEPT_NAME) LIKE UPPER('%${search_deptName}%')
</if>
) A
WHERE 1=1
</select>
<select id="getEtcDeptInfo" parameterType="map" resultType="map">
SELECT DEPT_CODE
, DEPT_NAME
, COMPANY_NAME
, LOCATION_NAME
, STATUS
FROM DEPT_INFO
WHERE 1=1
AND DEPT_CODE = #{deptCode}
</select>
<!-- //부서코드 중복체크 -->
<select id="checkDuplicateEtcDeptCode" parameterType="map" resultType="map">
SELECT COUNT(*) CNT
FROM DEPT_INFO
WHERE 1=1
AND UPPER(DEPT_CODE) = UPPER(#{deptCode})
</select>
<!-- //기타부서 저장 -->
<update id="saveEtcDeptInfo" parameterType="map">
INSERT INTO DEPT_INFO
(
DEPT_CODE,
DEPT_NAME,
COMPANY_NAME,
LOCATION_NAME,
DATA_TYPE,
REGDATE,
STATUS
)
VALUES
(
#{deptCode},
#{deptName},
#{companyName},
#{locationName},
'etc',
now(),
#{status}
) ON CONFLICT (DEPT_CODE) DO
UPDATE
SET
DEPT_NAME = #{deptName},
COMPANY_NAME = #{companyName},
LOCATION_NAME = #{locationName},
STATUS = #{status}
</update>
<!-- <update id="saveEtcDeptInfo" parameterType="map">
MERGE INTO DEPT_INFO T USING DUAL ON ( T.DEPT_CODE = #{deptCode})
WHEN MATCHED THEN
UPDATE
SET T.DEPT_NAME = #{deptName},
T.LOCATION_NAME = #{locationName}
WHEN NOT MATCHED THEN
INSERT
(
T.DEPT_CODE,
T.DEPT_NAME,
T.LOCATION_NAME,
T.DATA_TYPE,
T.REGDATE
)
VALUES
(
#{deptCode},
#{deptName},
#{locationName},
'etc',
SYSDATE
)
</update> -->
<update id="InsertDeptInfoHistory" parameterType="map">
INSERT INTO DEPT_INFO_HISTORY
(
OBJID,
PARENT_NAME,
PARENT_CODE,
COMPANY_NAME,
ACTIVE,
HISTORY_TYPE,
WRITER,
REG_DATE
) VALUES (
#{OBJID}::numeric,
#{deptName},
#{deptCode},
#{companyName},
#{status},
#{HISTORY_TYPE},
#{WRITER},
NOW()
)
</update>
<!-- //사원 목록 조회 -->
<select id="getEtcUserList" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT A.*, ROW_NUMBER() OVER (ORDER BY REGDATE_ORG DESC) RNUM
FROM (
SELECT SABUN
, USER_ID
, USER_NAME
, USER_NAME_ENG
, USER_NAME_CN
, DEPT_CODE
, DEPT_NAME
, POSITION_CODE
, POSITION_NAME
, EMAIL
, TEL
, CELL_PHONE
, USER_TYPE
, USER_TYPE_NAME
, REGDATE REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, DATA_TYPE
, TO_CHAR(END_DATE, 'YYYY-MM-DD') AS ENDDATE
, STATUS
FROM USER_INFO
WHERE 1=1
<choose>
<when test='search_user_type == null or "".equals(search_user_type) '>
AND NVL(partner_objid, '') = ''
</when>
<when test='search_user_type != null and "A".equals(search_user_type) '>
</when>
<when test='search_user_type != null and "U".equals(search_user_type) '>
AND NVL(partner_objid, '') = ''
</when>
<when test='search_user_type != null and "P".equals(search_user_type) '>
AND NVL(partner_objid, '') != ''
</when>
<otherwise>
</otherwise>
</choose>
<!-- AND DATA_TYPE = 'etc' -->
<if test="search_userTypeName != null and !''.equals(search_userTypeName)">
AND UPPER(USER_TYPE_NAME) LIKE UPPER('%${search_userTypeName}%')
</if>
<if test="search_deptName != null and !''.equals(search_deptName)">
AND UPPER(DEPT_NAME) LIKE UPPER('%${search_deptName}%')
</if>
<if test="search_userName != null and !''.equals(search_userName)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_userName}%')
</if>
) A
WHERE 1=1
) A
WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</select>
<!-- //사용자 상태 수정 -->
<update id="changeUserStatus" parameterType="map">
UPDATE USER_INFO
SET STATUS = #{status}
<if test="status != null and 'inActive'.equals(status)">
,END_DATE = now()
</if>
<if test="status != null and 'active'.equals(status)">
,END_DATE = null
</if>
WHERE USER_ID = #{user_id}
</update>
<insert id="saveUserHistoryInfo" parameterType="map">
INSERT INTO USER_INFO_HISTORY
(
USER_ID,
OLD_DATA,
NEW_DATA,
REG_DATE
) VALUES (
#{user_id},
(SELECT STATUS FROM USER_INFO WHERE USER_ID = #{user_id}),
#{status},
now()
)
</insert>
<!-- //사원 목록 COUNT -->
<select id="getEtcUserListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM USER_INFO
WHERE 1=1
<choose>
<when test='search_user_type == null or "".equals(search_user_type) '>
AND NVL(partner_objid, '') = ''
</when>
<when test='search_user_type != null and "A".equals(search_user_type) '>
</when>
<when test='search_user_type != null and "U".equals(search_user_type) '>
AND NVL(partner_objid, '') = ''
</when>
<when test='search_user_type != null and "P".equals(search_user_type) '>
AND NVL(partner_objid, '') != ''
</when>
<otherwise>
</otherwise>
</choose>
<!-- AND DATA_TYPE = 'etc' -->
<if test="search_userName != null and !''.equals(search_userName)">
AND UPPER(USER_NAME) LIKE UPPER('%${search_userName}%')
</if>
<if test="search_deptName != null and !''.equals(search_deptName)">
AND UPPER(DEPT_NAME) LIKE UPPER('%${search_deptName}%')
</if>
) A
WHERE 1=1
</select>
<select id="getEtcUserInfo" parameterType="map" resultType="map">
SELECT
INFO.USER_ID
, INFO.USER_NAME
, INFO.DEPT_CODE
, (SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = INFO.DEPT_CODE) AS DEPT_NAME
, POSITION_CODE
, POSITION_NAME
, RANK
, INFO.EMAIL
, INFO.TEL
, INFO.CELL_PHONE
, INFO.USER_TYPE_NAME
, TO_CHAR(INFO.REGDATE, 'YYYY-MM-DD') AS REGDATE
, INFO.DATA_TYPE
, INFO.STATUS
, SABUN
, FAX_NO
, PARTNER_OBJID
FROM USER_INFO INFO
WHERE 1=1
AND INFO.USER_ID = #{userId}
<!-- 2019-03-27 수정 / 이거 이상한 값 나옴 -->
<!-- SELECT
INFO.USER_ID
, INFO.USER_NAME
, INFO.DEPT_CODE
, (SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = INFO.DEPT_CODE) AS DEPT_NAME
, INFO.EMAIL
, INFO.TEL
, INFO.CELL_PHONE
, INFO.USER_TYPE_NAME
, TO_CHAR(INFO.REGDATE, 'YYYY-MM-DD') AS REGDATE
, INFO.DATA_TYPE
FROM USER_INFO INFO
WHERE 1=1
AND UPPER(INFO.DATA_TYPE) = 'ETC'
AND INFO.USER_ID = #{userId} -->
</select>
<!-- //사원ID 중복체크 -->
<select id="checkDuplicateEtcUserId" parameterType="map" resultType="map">
SELECT COUNT(*) CNT
FROM USER_INFO
WHERE 1=1
AND UPPER(USER_ID) = UPPER(#{userId})
</select>
<!-- //기타사용자 저장 -->
<update id="saveEtcUserInfo" parameterType="map">
INSERT INTO USER_INFO
(
USER_ID
, SABUN
, USER_PASSWORD
, USER_NAME
, DEPT_CODE
, DEPT_NAME
, EMAIL
, TEL
, CELL_PHONE
, USER_TYPE_NAME
, REGDATE
, STATUS
, FAX_NO
, POSITION_NAME
, RANK
, PARTNER_OBJID
)
VALUES
(
#{userId}
, #{sabun}
, #{password}
, #{userName}
, #{deptCode}
, (SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = #{deptCode})
, #{email}
, #{tel}
, #{cellPhone}
, (SELECT LOCATION_NAME FROM DEPT_INFO WHERE DEPT_CODE = #{deptCode})
, now()
, #{status}
, #{fax_no}
, #{position_name}
, #{rank}
, #{partner_objid}
) ON CONFLICT (USER_ID) DO
UPDATE
SET EMAIL = #{email}
<if test="userName != null and userName != ''">
, USER_NAME = #{userName}
</if>
<if test="deptCode != null and deptCode != ''">
, DEPT_CODE = #{deptCode}
, DEPT_NAME = (SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = #{deptCode})
</if>
<if test="password != null and password != ''">
, USER_PASSWORD = #{password}
</if>
, USER_TYPE_NAME = (SELECT LOCATION_NAME FROM DEPT_INFO WHERE DEPT_CODE = #{deptCode})
<if test="sabun != null and sabun != ''">
, SABUN = #{sabun}
</if>
<if test="status != null and status != ''">
, STATUS = #{status}
</if>
<if test="status != null and 'inActive'.equals(status)">
,END_DATE = now()
</if>
<if test="status != null and 'active'.equals(status)">
,END_DATE = null
</if>
, TEL = #{tel}
, CELL_PHONE = #{cellPhone}
, FAX_NO = #{fax_no}
, POSITION_NAME = #{position_name}
, RANK = #{rank}
<if test="partner_objid != null and partner_objid != ''">
, PARTNER_OBJID = #{partner_objid}
</if>
</update>
<update id="InsertUserInfoHistory" parameterType="map">
INSERT INTO USER_INFO_HISTORY
(
sabun,
user_id,
user_name,
dept_code,
dept_name,
user_type_name,
history_type,
writer,
regdate,
status
) VALUES (
#{sabun},
#{userId},
#{userName},
#{deptCode},
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = #{deptCode}),
(SELECT LOCATION_NAME FROM DEPT_INFO WHERE DEPT_CODE = #{deptCode}),
#{history_type},
#{writer},
NOW(),
#{status}
)
</update>
<!-- <update id="saveEtcUserInfo" parameterType="map">
MERGE INTO USER_INFO T USING DUAL ON ( T.USER_ID = #{userId})
WHEN MATCHED THEN
UPDATE
SET T.USER_NAME = #{userName}
, T.DEPT_CODE = #{deptCode}
, T.DEPT_NAME = (SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = #{deptCode})
, T.USER_PASSWORD = #{password}
, T.USER_TYPE_NAME = (SELECT LOCATION_NAME FROM DEPT_INFO WHERE DEPT_CODE = #{deptCode})
,T.SABUN = #{sabun}
,T.STATUS = #{status}
<if test="status != null and 'inActive'.equals(status)">
,END_DATE = sysdate
</if>
<if test="status != null and 'active'.equals(status)">
,END_DATE = ''
</if>
WHEN NOT MATCHED THEN
INSERT
(
T.USER_ID
, T.SABUN
, T.USER_PASSWORD
, T.USER_NAME
, T.DEPT_CODE
, T.DEPT_NAME
, T.EMAIL
, T.TEL
, T.CELL_PHONE
, T.USER_TYPE_NAME
, T.REGDATE
, T.STATUS
)
VALUES
(
#{userId}
, #{sabun}
, #{password}
, #{userName}
, #{deptCode}
, (SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = #{deptCode})
, #{email}
, #{tel}
, #{cellPhone}
, (SELECT LOCATION_NAME FROM DEPT_INFO WHERE DEPT_CODE = #{deptCode})
, SYSDATE
, #{status}
)
</update> -->
<!-- //첨부파일목록조회 COUNT -->
<select id="getAttachFileListCount" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT
COUNT(1) TOTAL_CNT
FROM (
SELECT A.OBJID
, A.TARGET_OBJID
, A.SAVED_FILE_NAME
, A.REAL_FILE_NAME
, A.DOC_TYPE
, A.DOC_TYPE_NAME
, A.FILE_SIZE
, A.FILE_EXT
, A.FILE_PATH
, 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
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS REGDATE
, A.REGDATE AS REGDATE_ORG
, A.STATUS
FROM ATTACH_FILE_INFO A
WHERE 1=1
AND UPPER(A.STATUS) = 'ACTIVE'
)
WHERE 1=1
<if test="search_docType != null and !''.equals(search_docType)">
AND DOC_TYPE = #{search_docType}
</if>
<if test="search_realFileName != null and !''.equals(search_realFileName)">
AND UPPER(REAL_FILE_NAME) LIKE UPPER('%${search_realFileName}%')
</if>
<if test="search_deptName != null and !''.equals(search_deptName)">
AND UPPER(WRITER_DEPT_NAME) LIKE UPPER('%${search_deptName}%')
</if>
<if test="search_userName != null and !''.equals(search_userName)">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_userName}%')
</if>
<if test="search_fromDate != null and !''.equals(search_fromDate)">
AND REGDATE_ORG <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'yyyy-mm-dd')
</if>
<if test="search_toDate != null and !''.equals(search_toDate)">
AND REGDATE_ORG <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'yyyy-mm-dd')
</if>
)
</select>
<!-- //첨부파일목록조회 -->
<select id="getAttachFileList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM
(
</if>
SELECT ROW_NUMBER() OVER(ORDER BY REGDATE_ORG DESC) AS RNUM, AA.*
FROM (
SELECT A.OBJID
, A.TARGET_OBJID
, A.SAVED_FILE_NAME
, A.REAL_FILE_NAME
, A.DOC_TYPE
, A.DOC_TYPE_NAME
, A.FILE_SIZE
, A.FILE_EXT
, A.FILE_PATH
, 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
, TO_CHAR(A.REGDATE, 'YYYY-MM-DD') AS REGDATE
, A.REGDATE AS REGDATE_ORG
, A.STATUS
FROM ATTACH_FILE_INFO A
WHERE 1=1
AND UPPER(A.STATUS) = 'ACTIVE'
) AA
WHERE 1=1
<if test="search_docType != null and !''.equals(search_docType)">
AND DOC_TYPE = #{search_docType}
</if>
<if test="search_realFileName != null and !''.equals(search_realFileName)">
AND UPPER(REAL_FILE_NAME) LIKE UPPER('%${search_realFileName}%')
</if>
<if test="search_deptName != null and !''.equals(search_deptName)">
AND UPPER(WRITER_DEPT_NAME) LIKE UPPER('%${search_deptName}%')
</if>
<if test="search_userName != null and !''.equals(search_userName)">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_userName}%')
</if>
<if test="search_fromDate != null and !''.equals(search_fromDate)">
AND REGDATE_ORG <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'yyyy-mm-dd')
</if>
<if test="search_toDate != null and !''.equals(search_toDate)">
AND REGDATE_ORG <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'yyyy-mm-dd')
</if>
<if test="'excel' != actionType">
)
WHERE 1=1
AND <![CDATA[ RNUM <= #{PAGE_END} ]]>
AND <![CDATA[ RNUM >= #{PAGE_START}]]>
</if>
</select>
<!-- //DOC_TYPE목록조회 -->
<select id="getDocTypeList" parameterType="map" resultType="map">
SELECT DISTINCT(DOC_TYPE_NAME), DOC_TYPE
FROM ATTACH_FILE_INFO
ORDER BY DOC_TYPE_NAME NULLS LAST
</select>
<!-- //첨부파일 업로드일 변경 -->
<update id="changeAttachFileUploadDate" parameterType="map">
UPDATE ATTACH_FILE_INFO SET REGDATE = TO_DATE(#{date}, 'yyyy-mm-dd') WHERE OBJID = #{objId}
</update>
<!-- //생산처별 인수담당자 조회 -->
<select id="getTakeOverMngList" parameterType="map" resultType="map">
SELECT ROWNUM AS RNUM, AA.*
FROM (
SELECT A.PRODUCING_COMPANY
, (SELECT USER_ID FROM TAKE_OVER_PIC_MNG WHERE PRODUCING_COMPANY = A.PRODUCING_COMPANY) AS USER_ID
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = (SELECT USER_ID FROM TAKE_OVER_PIC_MNG WHERE PRODUCING_COMPANY = A.PRODUCING_COMPANY)) AS DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = (SELECT USER_ID FROM TAKE_OVER_PIC_MNG WHERE PRODUCING_COMPANY = A.PRODUCING_COMPANY)) AS USER_NAME
, (SELECT TO_CHAR(REGDATE, 'YYYY-MM-DD') FROM TAKE_OVER_PIC_MNG WHERE PRODUCING_COMPANY = A.PRODUCING_COMPANY) AS REGDATE
FROM (
SELECT DISTINCT PRODUCING_COMPANY
FROM PMS_DEV_MASTER_REL_PART_INFO
WHERE PRODUCING_COMPANY IS NOT NULL
) A
) AA
</select>
<!-- //생산처 인수담당자 조회 -->
<select id="getTakeOverMngInfo" parameterType="map" resultType="map">
SELECT A.PRODUCING_COMPANY
, (SELECT USER_ID FROM TAKE_OVER_PIC_MNG WHERE PRODUCING_COMPANY = A.PRODUCING_COMPANY) AS USER_ID
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = (SELECT USER_ID FROM TAKE_OVER_PIC_MNG WHERE PRODUCING_COMPANY = A.PRODUCING_COMPANY)) AS DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = (SELECT USER_ID FROM TAKE_OVER_PIC_MNG WHERE PRODUCING_COMPANY = A.PRODUCING_COMPANY)) AS USER_NAME
, (SELECT TO_CHAR(REGDATE, 'YYYY-MM-DD') FROM TAKE_OVER_PIC_MNG WHERE PRODUCING_COMPANY = A.PRODUCING_COMPANY) AS REGDATE
FROM (
SELECT DISTINCT PRODUCING_COMPANY
FROM PMS_DEV_MASTER_REL_PART_INFO
WHERE PRODUCING_COMPANY IS NOT NULL
) A
WHERE A.PRODUCING_COMPANY = #{producingCompany}
</select>
<!-- //생산처 인수담당자 저장 -->
<update id="saveTakeOverPICInfo" parameterType="map">
MERGE INTO TAKE_OVER_PIC_MNG USING DUAL ON ( PRODUCING_COMPANY = #{producingCompany})
WHEN MATCHED THEN
UPDATE
SET USER_ID = #{userId}
WHEN NOT MATCHED THEN
INSERT
(
PRODUCING_COMPANY
, USER_ID
, REGDATE
)
VALUES
(
#{producingCompany}
, #{userId}
, SYSDATE
)
</update>
<!-- //jmpark end-->
<!-- 생산공장 관리 목록 -->
<select id="getFactoryList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT C.*, ROW_NUMBER() OVER (ORDER BY REGDATE DESC) RNUM
FROM (
SELECT OBJID
, FACTORY_NAME
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM OEM_FACTORY_MNG
WHERE 1=1
<if test="search_factoryName != null and search_factoryName != ''">
AND UPPER(FACTORY_NAME) LIKE UPPER('%${search_factoryName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
) C 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_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</if>
</select>
<!-- 생산공장 관리 목록 갯수 -->
<select id="getFactoryListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT OBJID
, FACTORY_NAME
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM OEM_FACTORY_MNG
WHERE 1=1
<if test="search_factoryName != null and search_factoryName != ''">
AND UPPER(FACTORY_NAME) LIKE UPPER('%${search_factoryName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
)WHERE 1=1
) WHERE 1=1
</select>
<!-- //생산공장명 상세(Form, Detail) -->
<select id="getFactoryInfo" parameterType="map" resultType="map">
SELECT OBJID
, FACTORY_NAME
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM OEM_FACTORY_MNG
WHERE 1=1
AND OBJID = #{objId}
</select>
<!-- //생산공장명 중복체크 -->
<select id="checkDuplicateFactoryName" parameterType="map" resultType="map">
SELECT COUNT(*) CNT
FROM OEM_FACTORY_MNG
WHERE 1=1
AND FACTORY_NAME = #{factoryName}
</select>
<!-- //생산공장명 저장 -->
<update id="saveFactoryInfo" parameterType="map">
MERGE INTO OEM_FACTORY_MNG T USING DUAL ON ( T.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET T.FACTORY_NAME = #{factoryName},
T.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.FACTORY_NAME,
T.WRITER,
T.REGDATE,
T.STATUS
)
VALUES
(
#{objId},
#{factoryName},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- //생산공장명 상태 수정 -->
<update id="changeFactoryStatus" parameterType="map">
UPDATE OEM_FACTORY_MNG SET STATUS = #{status} WHERE OBJID = #{objId}
</update>
<!-- 라인설치장소 관리 목록 -->
<select id="getLineAreaList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT C.*, ROW_NUMBER() OVER (ORDER BY REGDATE DESC) RNUM
FROM(
SELECT OBJID
, AREA_NAME
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM LINE_INSTL_AREA_MNG
WHERE 1=1
<if test="search_lineAreaName != null and search_lineAreaName != ''">
AND UPPER(AREA_NAME) LIKE UPPER('%${search_lineAreaName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
) C 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_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</if>
</select>
<!-- 라인설치장소 관리 목록 갯수 -->
<select id="getLineAreaListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT OBJID
, AREA_NAME
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM LINE_INSTL_AREA_MNG
WHERE 1=1
<if test="search_lineAreaName != null and search_lineAreaName != ''">
AND UPPER(AREA_NAME) LIKE UPPER('%${search_lineAreaName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
) C WHERE 1=1
) WHERE 1=1
</select>
<!-- //라인설치장소 상세(Form, Detail) -->
<select id="getLineAreaInfo" parameterType="map" resultType="map">
SELECT OBJID
, AREA_NAME
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM LINE_INSTL_AREA_MNG
WHERE 1=1
AND OBJID = #{objId}
</select>
<!-- //라인설치장소 중복체크 -->
<select id="checkDuplicateLineAreaName" parameterType="map" resultType="map">
SELECT COUNT(*) CNT
FROM LINE_INSTL_AREA_MNG
WHERE 1=1
AND AREA_NAME = #{lineAreaName}
</select>
<!-- //라인설치장소 저장 -->
<update id="saveLineAreaInfo" parameterType="map">
MERGE INTO LINE_INSTL_AREA_MNG T USING DUAL ON ( T.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET T.AREA_NAME = #{lineAreaName},
T.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.AREA_NAME,
T.WRITER,
T.REGDATE,
T.STATUS
)
VALUES
(
#{objId},
#{lineAreaName},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- //라인설치장소 상태 수정 -->
<update id="changeLineAreaStatus" parameterType="map">
UPDATE LINE_INSTL_AREA_MNG SET STATUS = #{status} WHERE OBJID = #{objId}
</update>
<!-- DFMEA 대분류 관리 목록 -->
<select id="getDfmeaGroupMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT CATEGORY_GROUP.*,ROW_NUMBER() OVER(ORDER BY REGDATE_ORG DESC) RNUM
FROM (
SELECT *
FROM(
SELECT A.*, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PROD_GROUP_OBJID) AS PROD_GROUP_NAME
FROM (
SELECT OBJID
, TARGET_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PROD_NAME
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PROD_GROUP_OBJID
, CATEGORY_GROUP_NAME
, DESCRIPTION
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM DFMEA_CATEGORY_GROUP
WHERE 1=1
<if test="search_categoryGroupName != null and search_categoryGroupName != ''">
AND UPPER(CATEGORY_GROUP_NAME) LIKE UPPER('%${search_categoryGroupName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
)A WHERE 1=1
<if test="search_writer !=null and search_writer !=''">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_productName != null and search_productName != ''">
AND UPPER(PROD_NAME) LIKE UPPER('%${search_productName}%')
</if>
) WHERE 1=1
<if test="search_productGroupName != null and !''.equals(search_productGroupName)">
AND UPPER(PROD_GROUP_NAME) LIKE UPPER('%${search_productGroupName}%')
</if>
) CATEGORY_GROUP
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>
<!-- DFMEA 대분류 검색 목록 -->
<select id="dfmeaGroupMngList" parameterType="map" resultType="map">
SELECT INFO.*, ROW_NUMBER() OVER (ORDER BY REGDATE_ORG DESC) RNUM
FROM(
SELECT OBJID
, TARGET_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PROD_NAME
, CATEGORY_GROUP_NAME
, DESCRIPTION
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DFMEA_CATEGORY_GROUP
WHERE 1=1
AND UPPER(STATUS) = UPPER('active')
) INFO
</select>
<!-- DFMEA 대분류 관리 목록 갯수 -->
<select id="getDfmeaGroupMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT A.*, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PROD_GROUP_OBJID) AS PROD_GROUP_NAME
FROM (
SELECT OBJID
, TARGET_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PROD_NAME
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PROD_GROUP_OBJID
, CATEGORY_GROUP_NAME
, DESCRIPTION
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DFMEA_CATEGORY_GROUP
WHERE 1=1
<if test="search_categoryGroupName != null and search_categoryGroupName != ''">
AND UPPER(CATEGORY_GROUP_NAME) LIKE UPPER('%${search_categoryGroupName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
)A WHERE 1=1
<if test="search_writer !=null and search_writer !=''">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_productName != null and search_productName != ''">
AND UPPER(PROD_NAME) LIKE UPPER('%${search_productName}%')
</if>
)WHERE 1=1
<if test="search_productGroupName != null and !''.equals(search_productGroupName)">
AND UPPER(PROD_GROUP_NAME) LIKE UPPER('%${search_productGroupName}%')
</if>
)WHERE 1=1
</select>
<!-- //DFMEA 대분류 상세(Form, Detail) -->
<select id="getDfmeaGroupMngInfo" parameterType="map" resultType="map">
SELECT A.*, (SELECT PRODUCT_GROUP_NAME FROM PRODUCT_GROUP_MNG WHERE OBJID = PROD_GROUP_OBJID) AS PROD_GROUP_NAME
FROM (
SELECT OBJID
, TARGET_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PROD_NAME
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PROD_GROUP_OBJID
, CATEGORY_GROUP_NAME
, DESCRIPTION
, WRITER
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DFMEA_CATEGORY_GROUP
WHERE 1=1
AND OBJID = #{objId}
) A
</select>
<!-- //DFMEA 대분류 중복체크 -->
<select id="checkDuplicateDfmeaGroupMngName" parameterType="map" resultType="map">
SELECT COUNT(*) CNT
FROM DFMEA_CATEGORY_GROUP
WHERE 1=1
AND CATEGORY_GROUP_NAME = #{categoryGroupName}
</select>
<!-- //DFMEA 대분류 저장 -->
<update id="saveDfmeaGroupMngInfo" parameterType="map">
MERGE INTO DFMEA_CATEGORY_GROUP T USING DUAL ON ( T.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET T.TARGET_OBJID = #{prodObjId},
T.CATEGORY_GROUP_NAME = #{categoryGroupName},
T.DESCRIPTION = #{categoryGroupDescription},
T.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.TARGET_OBJID,
T.CATEGORY_GROUP_NAME,
T.DESCRIPTION,
T.WRITER,
T.REGDATE,
T.STATUS
)
VALUES
(
#{objId},
#{prodObjId},
#{categoryGroupName},
#{categoryGroupDescription},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- //DFMEA 대분류 상태 수정 -->
<update id="changeDfmeaGroupMngStatus" parameterType="map">
UPDATE DFMEA_CATEGORY_GROUP SET STATUS = #{status} WHERE OBJID = #{objId}
</update>
<!-- DFMEA 중분류 관리 목록 -->
<select id="getDfmeaMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT CATEGORY_GROUP.*,ROW_NUMBER() OVER(ORDER BY REGDATE_ORG DESC) AS RNUM
FROM (
SELECT *
FROM (
SELECT OBJID
, CATEGORY_GROUP_OBJID
, CATEGORY_NAME
, WRITER
, (SELECT CATEGORY_GROUP_NAME FROM DFMEA_CATEGORY_GROUP WHERE OBJID = CATEGORY_GROUP_OBJID) AS CATEGORY_GROUP_NAME
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM DFMEA_CATEGORY
WHERE 1=1
<if test="search_categoryName != null and search_categoryName != ''">
AND UPPER(CATEGORY_NAME) LIKE UPPER('%${search_categoryName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
)WHERE 1=1
<if test="search_writer !=null and search_writer !=''">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
) CATEGORY_GROUP
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>
<!-- DFMEA 중분류 검색 목록 -->
<select id="dfmeaMngList" parameterType="map" resultType="map">
SELECT ROWNUM RNUM
, OBJID
, CATEGORY_GROUP_OBJID
, CATEGORY_NAME
, WRITER
, (SELECT CATEGORY_GROUP_NAME FROM DFMEA_CATEGORY_GROUP WHERE OBJID = CATEGORY_GROUP_OBJID) AS CATEGORY_GROUP_NAME
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DFMEA_CATEGORY
WHERE 1=1
AND UPPER(STATUS) = UPPER('active')
ORDER BY RNUM
</select>
<!-- DFMEA 중분류 관리 목록 갯수 -->
<select id="getDfmeaMngListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT OBJID
, CATEGORY_GROUP_OBJID
, CATEGORY_NAME
, WRITER
, (SELECT CATEGORY_GROUP_NAME FROM DFMEA_CATEGORY_GROUP WHERE OBJID = CATEGORY_GROUP_OBJID) AS CATEGORY_GROUP_NAME
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DFMEA_CATEGORY
WHERE 1=1
<if test="search_categoryName != null and search_categoryName != ''">
AND UPPER(CATEGORY_NAME) LIKE UPPER('%${search_categoryName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
)WHERE 1=1
<if test="search_writer !=null and search_writer !=''">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
)WHERE 1=1
</select>
<!-- //DFMEA 중분류 상세(Form, Detail) -->
<select id="getDfmeaMngInfo" parameterType="map" resultType="map">
SELECT OBJID
, CATEGORY_GROUP_OBJID
, CATEGORY_NAME
, WRITER
, (SELECT CATEGORY_GROUP_NAME FROM DFMEA_CATEGORY_GROUP WHERE OBJID = CATEGORY_GROUP_OBJID) AS CATEGORY_GROUP_NAME
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DFMEA_CATEGORY
WHERE 1=1
AND OBJID = #{objId}
</select>
<!-- //DFMEA 중분류 중복체크 -->
<select id="checkDuplicateDfmeaMngName" parameterType="map" resultType="map">
SELECT COUNT(*) CNT
FROM DFMEA_CATEGORY
WHERE 1=1
AND CATEGORY_GROUP_OBJID = #{categoryGroupObjId}
AND CATEGORY_NAME = #{categoryName}
</select>
<!-- //DFMEA 중분류 저장 -->
<update id="saveDfmeaMngInfo" parameterType="map">
MERGE INTO DFMEA_CATEGORY T USING DUAL ON ( T.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET T.CATEGORY_NAME = #{categoryName},
T.CATEGORY_GROUP_OBJID = #{categoryGroupObjId},
T.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.CATEGORY_GROUP_OBJID,
T.CATEGORY_NAME,
T.WRITER,
T.REGDATE,
T.STATUS
)
VALUES
(
#{objId},
#{categoryGroupObjId},
#{categoryName},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- //DFMEA 중분류 상태 수정 -->
<update id="changeDfmeaMngStatus" parameterType="map">
UPDATE DFMEA_CATEGORY SET STATUS = #{status} WHERE OBJID = #{objId}
</update>
<!-- //기타 사용자 삭제 -->
<delete id="etcUserDelete" parameterType="map">
DELETE FROM USER_INFO
WHERE USER_ID = #{userId}
</delete>
<!-- 잠재적 고장필터 관리 목록 -->
<select id="getDfmeaAttributeList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT CATEGORY_GROUP.*,ROW_NUMBER() OVER(ORDER BY REGDATE_ORG DESC) AS RNUM
FROM (
SELECT OBJID
, CATEGORY_OBJID
, ATTRIBUTE_NAME
, POTENTIAL_IMPACT
, POTENTIAL_CAUSE
, CURRENT_DESIGN_MANAGE_PREVENT
, CURRENT_DESIGN_MANAGE_DETECT
, RECOMMEND_OPTION
, WRITER
, (SELECT CATEGORY_NAME FROM DFMEA_CATEGORY WHERE OBJID = CATEGORY_OBJID) AS CATEGORY_NAME
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM DFMEA_CATEGORY_ATTRIBUTE
WHERE 1=1
<if test="search_attributeName != null and search_attributeName != ''">
AND UPPER(ATTRIBUTE_NAME) LIKE UPPER('%${search_attributeName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
)WHERE 1=1
<if test="search_writer !=null and search_writer !=''">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
) CATEGORY_GROUP
<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="getDfmeaAttributeListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT OBJID
, CATEGORY_OBJID
, ATTRIBUTE_NAME
, POTENTIAL_IMPACT
, POTENTIAL_CAUSE
, CURRENT_DESIGN_MANAGE_PREVENT
, CURRENT_DESIGN_MANAGE_DETECT
, RECOMMEND_OPTION
, WRITER
, (SELECT CATEGORY_NAME FROM DFMEA_CATEGORY WHERE OBJID = CATEGORY_OBJID) AS CATEGORY_NAME
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DFMEA_CATEGORY_ATTRIBUTE
WHERE 1=1
<if test="search_attributeName != null and search_attributeName != ''">
AND UPPER(ATTRIBUTE_NAME) LIKE UPPER('%${search_attributeName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
)WHERE 1=1
<if test="search_writer !=null and search_writer !=''">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
)WHERE 1=1
</select>
<!-- 잠재적 고장필터 상세(Form, Detail) -->
<select id="getDfmeaAttributeInfo" parameterType="map" resultType="map">
SELECT OBJID
, CATEGORY_OBJID
, ATTRIBUTE_NAME
, POTENTIAL_IMPACT
, POTENTIAL_CAUSE
, CURRENT_DESIGN_MANAGE_PREVENT
, CURRENT_DESIGN_MANAGE_DETECT
, RECOMMEND_OPTION
, WRITER
, (SELECT CATEGORY_NAME FROM DFMEA_CATEGORY WHERE OBJID = CATEGORY_OBJID) AS CATEGORY_NAME
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DFMEA_CATEGORY_ATTRIBUTE
WHERE 1=1
AND OBJID = #{objId}
</select>
<!-- 잠재적 고장필터 중복체크 -->
<select id="checkDuplicateDfmeaAttributeName" parameterType="map" resultType="map">
SELECT COUNT(*) CNT
FROM DFMEA_CATEGORY_ATTRIBUTE
WHERE 1=1
AND CATEGORY_OBJID = #{categoryObjId}
AND ATTRIBUTE_NAME = #{attributeName}
</select>
<!-- 잠재적 고장필터 저장 -->
<update id="saveDfmeaAttributeInfo" parameterType="map">
MERGE INTO DFMEA_CATEGORY_ATTRIBUTE T USING DUAL ON ( T.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET T.ATTRIBUTE_NAME = #{attributeName},
T.POTENTIAL_IMPACT = #{potentialImpact},
T.POTENTIAL_CAUSE = #{potentialCause},
T.CURRENT_DESIGN_MANAGE_PREVENT = #{currentPrevent},
T.CURRENT_DESIGN_MANAGE_DETECT = #{currentDetect},
T.RECOMMEND_OPTION = #{recommendOption},
T.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.CATEGORY_OBJID,
T.ATTRIBUTE_NAME,
T.POTENTIAL_IMPACT,
T.POTENTIAL_CAUSE,
T.CURRENT_DESIGN_MANAGE_PREVENT,
T.CURRENT_DESIGN_MANAGE_DETECT,
T.RECOMMEND_OPTION,
T.WRITER,
T.REGDATE,
T.STATUS
)
VALUES
(
#{objId},
#{categoryObjId},
#{attributeName},
#{potentialImpact},
#{potentialCause},
#{currentPrevent},
#{currentDetect},
#{recommendOption},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- 잠재적 고장필터 상태 수정 -->
<update id="changeDfmeaAttributeStatus" parameterType="map">
UPDATE DFMEA_CATEGORY_ATTRIBUTE SET STATUS = #{status} WHERE OBJID = #{objId}
</update>
<!-- 설계체크리스트 대분류 관리 목록 -->
<select id="getDesignCheckListGroupList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT B.*,ROW_NUMBER() OVER(ORDER BY REGDATE_ORG DESC) RNUM
FROM (
SELECT A.*
FROM (
SELECT OBJID
, TARGET_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PROD_NAME
, GROUP_NAME
, WRITER
, SEQ
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM DESIGN_CHECK_LIST_GROUP
WHERE 1=1
)A WHERE 1=1
<if test="search_groupName != null and search_groupName != ''">
AND UPPER(GROUP_NAME) LIKE UPPER('%${search_groupName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
<if test="search_writer !=null and search_writer !=''">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_productName != null and search_productName != ''">
AND UPPER(PROD_NAME) LIKE UPPER('%${search_productName}%')
</if>
) B 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>
<!-- 설계체크리스트 대분류 검색 목록 -->
<select id="designCheckListGroup" parameterType="map" resultType="map">
SELECT INFO.*, ROW_NUMBER() OVER (ORDER BY REGDATE_ORG DESC) RNUM
FROM(
SELECT OBJID
, TARGET_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PROD_NAME
, GROUP_NAME
, WRITER
, SEQ
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DESIGN_CHECK_LIST_GROUP
WHERE 1=1
AND UPPER(STATUS) = UPPER('active')
) INFO
</select>
<!-- 설계체크리스트 대분류 관리 목록 갯수 -->
<select id="getDesignCheckListGroupListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT A.*
FROM (
SELECT OBJID
, TARGET_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PROD_NAME
, GROUP_NAME
, WRITER
, SEQ
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM DESIGN_CHECK_LIST_GROUP
WHERE 1=1
)A WHERE 1=1
)WHERE 1=1
<if test="search_groupName != null and search_groupName != ''">
AND UPPER(GROUP_NAME) LIKE UPPER('%${search_groupName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
<if test="search_writer !=null and search_writer !=''">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_productName != null and search_productName != ''">
AND UPPER(PROD_NAME) LIKE UPPER('%${search_productName}%')
</if>
)WHERE 1=1
</select>
<!-- //설계체크리스트 대분류 상세(Form, Detail) -->
<select id="getDesignCheckListGroupInfo" parameterType="map" resultType="map">
SELECT A.*
FROM (
SELECT OBJID
, TARGET_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PROD_NAME
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = TARGET_OBJID) AS PROD_GROUP_OBJID
, GROUP_NAME
, WRITER
, SEQ
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DESIGN_CHECK_LIST_GROUP
WHERE 1=1
AND OBJID = #{objId}
) A
</select>
<!-- //설계체크리스트 대분류 중복체크 -->
<select id="checkDuplicateDesignCheckListGroupName" parameterType="map" resultType="map">
SELECT COUNT(*) CNT
FROM DESIGN_CHECK_LIST_GROUP
WHERE 1=1
AND GROUP_NAME = #{groupName}
AND SEQ = #{seqNum}
</select>
<!-- //DFMEA 대분류 저장 -->
<update id="saveDesignCheckListGroupInfo" parameterType="map">
MERGE INTO DESIGN_CHECK_LIST_GROUP T USING DUAL ON ( T.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET T.TARGET_OBJID = #{prodObjId},
T.GROUP_NAME = #{groupName},
T.SEQ = #{seqNum},
T.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.TARGET_OBJID,
T.GROUP_NAME,
T.WRITER,
T.SEQ,
T.REGDATE,
T.STATUS
)
VALUES
(
#{objId},
#{prodObjId},
#{groupName},
#{writer},
#{seqNum},
SYSDATE,
#{status}
)
</update>
<!-- //설계체크리스트 대분류 상태 수정 -->
<update id="changeDesignCheckListGroupStatus" parameterType="map">
UPDATE DESIGN_CHECK_LIST_GROUP SET STATUS = #{status} WHERE OBJID = #{objId}
</update>
<!-- 설계체크리스트 중분류 관리 목록 -->
<select id="getDesignCheckListCategoryList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT B.*,ROW_NUMBER() OVER(ORDER BY REGDATE_ORG DESC) RNUM
FROM (
SELECT A.*
FROM (
SELECT OBJID
, PRODUCT_OBJID
, GROUP_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) AS PROD_NAME
, (SELECT GROUP_NAME FROM DESIGN_CHECK_LIST_GROUP WHERE OBJID = GROUP_OBJID) AS GROUP_NAME
, CATEGORY_NAME
, WRITER
, SEQ
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM DESIGN_CHECK_LIST_CATEGORY
WHERE 1=1
)A WHERE 1=1
<if test="search_groupName != null and search_groupName != ''">
AND UPPER(GROUP_NAME) LIKE UPPER('%${search_groupName}%')
</if>
<if test="search_categoryName != null and search_categoryName != ''">
AND UPPER(CATEGORY_NAME) LIKE UPPER('%${search_categoryName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
<if test="search_writer !=null and search_writer !=''">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_productName != null and search_productName != ''">
AND UPPER(PROD_NAME) LIKE UPPER('%${search_productName}%')
</if>
) B 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>
<!-- 설계체크리스트 중분류 검색 목록 -->
<select id="designCheckListCategory" parameterType="map" resultType="map">
SELECT INFO.*, ROW_NUMBER() OVER (ORDER BY REGDATE_ORG DESC) RNUM
FROM(
SELECT OBJID
, PRODUCT_OBJID
, GROUP_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) AS PROD_NAME
, CATEGORY_NAME
, WRITER
, SEQ
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DESIGN_CHECK_LIST_CATEGORY
WHERE 1=1
AND UPPER(STATUS) = UPPER('active')
) INFO
</select>
<!-- 설계체크리스트 중분류 관리 목록 갯수 -->
<select id="getDesignCheckListCategoryListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT A.*
FROM (
SELECT OBJID
, PRODUCT_OBJID
, GROUP_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) AS PROD_NAME
, (SELECT GROUP_NAME FROM DESIGN_CHECK_LIST_GROUP WHERE OBJID = GROUP_OBJID) AS GROUP_NAME
, CATEGORY_NAME
, WRITER
, SEQ
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM DESIGN_CHECK_LIST_CATEGORY
WHERE 1=1
)A WHERE 1=1
)WHERE 1=1
<if test="search_groupName != null and search_groupName != ''">
AND UPPER(GROUP_NAME) LIKE UPPER('%${search_groupName}%')
</if>
<if test="search_categoryName != null and search_categoryName != ''">
AND UPPER(CATEGORY_NAME) LIKE UPPER('%${search_categoryName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
<if test="search_writer !=null and search_writer !=''">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_productName != null and search_productName != ''">
AND UPPER(PROD_NAME) LIKE UPPER('%${search_productName}%')
</if>
)WHERE 1=1
</select>
<!-- //설계체크리스트 중분류 상세(Form, Detail) -->
<select id="getDesignCheckListCategoryInfo" parameterType="map" resultType="map">
SELECT A.*
FROM (
SELECT OBJID
, PRODUCT_OBJID
, GROUP_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) AS PROD_NAME
, (SELECT GROUP_NAME FROM DESIGN_CHECK_LIST_GROUP WHERE OBJID = GROUP_OBJID) AS GROUP_NAME
, CATEGORY_NAME
, WRITER
, SEQ
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DESIGN_CHECK_LIST_CATEGORY
WHERE 1=1
AND OBJID = #{objId}
) A
</select>
<!-- //설계체크리스트 중분류 중복체크 -->
<select id="checkDuplicateDesignCheckListCategoryName" parameterType="map" resultType="map">
SELECT COUNT(*) CNT
FROM DESIGN_CHECK_LIST_CATEGORY
WHERE 1=1
AND CATEGORY_NAME = #{categoryName}
AND SEQ = #{seqNum}
</select>
<!-- //DFMEA 중분류 저장 -->
<update id="saveDesignCheckListCategoryInfo" parameterType="map">
MERGE INTO DESIGN_CHECK_LIST_CATEGORY T USING DUAL ON ( T.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET T.PRODUCT_OBJID = #{prodObjId},
T.GROUP_OBJID = #{groupObjId},
T.CATEGORY_NAME = #{categoryName},
T.SEQ = #{seqNum},
T.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.PRODUCT_OBJID,
T.GROUP_OBJID,
T.CATEGORY_NAME,
T.WRITER,
T.REGDATE,
T.SEQ,
T.STATUS
)
VALUES
(
#{objId},
#{prodObjId},
#{groupObjId},
#{categoryName},
#{writer},
SYSDATE,
#{seqNum},
#{status}
)
</update>
<!-- //설계체크리스트 중분류 상태 수정 -->
<update id="changeDesignCheckListCategoryStatus" parameterType="map">
UPDATE DESIGN_CHECK_LIST_CATEGORY SET STATUS = #{status} WHERE OBJID = #{objId}
</update>
<!-- 설계체크리스트 소분류 관리 목록 -->
<select id="getDesignCheckListAttributeList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM (
</if>
SELECT C.*
FROM (
SELECT B.*,ROW_NUMBER() OVER(ORDER BY REGDATE_ORG DESC) RNUM
FROM(
SELECT A.*, (SELECT GROUP_NAME FROM DESIGN_CHECK_LIST_GROUP WHERE OBJID = GROUP_OBJID) AS GROUP_NAME
FROM (
SELECT OBJID
, PRODUCT_OBJID
, (SELECT PRODUCT_GROUP_OBJID FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) AS PROD_GROUP_OBJID
, CATEGORY_OBJID
, (SELECT GROUP_OBJID FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = CATEGORY_OBJID) AS GROUP_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) AS PROD_NAME
, (SELECT CATEGORY_NAME FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = CATEGORY_OBJID) AS CATEGORY_NAME
, ATTRIBUTE_NAME
, CHECK_OPTION
, CHECK_BASE
, WRITER
, SEQ
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM DESIGN_CHECK_LIST_ATTRIBUTE
WHERE 1=1
)A WHERE 1=1
) B WHERE 1=1
<if test="search_groupName != null and search_groupName != ''">
AND UPPER(GROUP_NAME) LIKE UPPER('%${search_groupName}%')
</if>
<if test="search_categoryName != null and search_categoryName != ''">
AND UPPER(CATEGORY_NAME) LIKE UPPER('%${search_categoryName}%')
</if>
<if test="search_attributeName != null and search_attributeName != ''">
AND UPPER(ATTRIBUTE_NAME) LIKE UPPER('%${search_attributeName}%')
</if>
<if test="search_writer !=null and search_writer !=''">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_productName != null and search_productName != ''">
AND UPPER(PROD_NAME) LIKE UPPER('%${search_productName}%')
</if>
<if test="search_productGroup != null and search_productGroup !=''">
AND PROD_GROUP_OBJID = #{search_productGroup}
</if>
<if test="search_productType != null and search_productType !=''">
AND PRODUCT_OBJID = #{search_productType}
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
) C 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>
<!-- 설계체크리스트 소분류 검색 목록 -->
<select id="designCheckListAttribute" parameterType="map" resultType="map">
SELECT INFO.*, ROW_NUMBER() OVER (ORDER BY REGDATE_ORG DESC) RNUM
FROM(
SELECT OBJID
, PRODUCT_OBJID
, CATEGORY_OBJID
, (SELECT GROUP_OBJID FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = CATEGORY_OBJID) AS GROUP_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) AS PROD_NAME
, (SELECT CATEGORY_NAME FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = CATEGORY_OBJID) AS CATEGORY_NAME
, ATTRIBUTE_NAME
, CHECK_OPTION
, CHECK_BASE
, WRITER
, SEQ
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DESIGN_CHECK_LIST_ATTRIBUTE
WHERE 1=1
AND UPPER(STATUS) = UPPER('active')
) INFO
</select>
<!-- 설계체크리스트 소분류 관리 목록 갯수 -->
<select id="getDesignCheckListAttributeListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM (
SELECT A.*, (SELECT GROUP_NAME FROM DESIGN_CHECK_LIST_GROUP WHERE OBJID = GROUP_OBJID) AS GROUP_NAME
FROM (
SELECT OBJID
, PRODUCT_OBJID
, CATEGORY_OBJID
, (SELECT GROUP_OBJID FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = CATEGORY_OBJID) AS GROUP_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) AS PROD_NAME
, (SELECT CATEGORY_NAME FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = CATEGORY_OBJID) AS CATEGORY_NAME
, ATTRIBUTE_NAME
, CHECK_OPTION
, CHECK_BASE
, WRITER
, SEQ
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
, CASE WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
ELSE STATUS
END AS STATUS_STR
FROM DESIGN_CHECK_LIST_ATTRIBUTE
WHERE 1=1
)A WHERE 1=1
)WHERE 1=1
<if test="search_groupName != null and search_groupName != ''">
AND UPPER(GROUP_NAME) LIKE UPPER('%${search_groupName}%')
</if>
<if test="search_categoryName != null and search_categoryName != ''">
AND UPPER(CATEGORY_NAME) LIKE UPPER('%${search_categoryName}%')
</if>
<if test="search_attributeName != null and search_attributeName != ''">
AND UPPER(ATTRIBUTE_NAME) LIKE UPPER('%${search_attributeName}%')
</if>
<if test="search_status != null and search_status != ''">
AND UPPER(STATUS) = UPPER(#{search_status})
</if>
<if test="search_writer !=null and search_writer !=''">
AND UPPER(WRITER_USER_NAME) LIKE UPPER('%${search_writer}%')
</if>
<if test="search_productName != null and search_productName != ''">
AND UPPER(PROD_NAME) LIKE UPPER('%${search_productName}%')
</if>
)WHERE 1=1
</select>
<!-- //설계체크리스트 소분류 상세(Form, Detail) -->
<select id="getDesignCheckListAttributeInfo" parameterType="map" resultType="map">
SELECT B.*
FROM(
SELECT A.*, (SELECT GROUP_NAME FROM DESIGN_CHECK_LIST_GROUP WHERE OBJID = GROUP_OBJID) AS GROUP_NAME
FROM (
SELECT OBJID
, PRODUCT_OBJID
, CATEGORY_OBJID
, (SELECT GROUP_OBJID FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = CATEGORY_OBJID) AS GROUP_OBJID
, (SELECT PRODUCT_NAME FROM PRODUCT_MNG WHERE OBJID = PRODUCT_OBJID) AS PROD_NAME
, (SELECT CATEGORY_NAME FROM DESIGN_CHECK_LIST_CATEGORY WHERE OBJID = CATEGORY_OBJID) AS CATEGORY_NAME
, ATTRIBUTE_NAME
, CHECK_OPTION
, CHECK_BASE
, WRITER
, SEQ
, (SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_DEPT_NAME
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) AS WRITER_USER_NAME
, REGDATE AS REGDATE_ORG
, TO_CHAR(REGDATE, 'YYYY-MM-DD') AS REGDATE
, STATUS
FROM DESIGN_CHECK_LIST_ATTRIBUTE
WHERE 1=1
AND OBJID = #{objId}
) A
)B
</select>
<!-- //설계체크리스트 소분류 중복체크 -->
<select id="checkDuplicateDesignCheckListAttributeName" parameterType="map" resultType="map">
SELECT COUNT(*) CNT
FROM DESIGN_CHECK_LIST_ATTRIBUTE
WHERE 1=1
AND ATTRIBUTE_NAME = #{attributeName}
AND SEQ = #{seqNum}
</select>
<!-- //DFMEA 소분류 저장 -->
<update id="saveDesignCheckListAttributeInfo" parameterType="map">
MERGE INTO DESIGN_CHECK_LIST_ATTRIBUTE T USING DUAL ON ( T.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET T.PRODUCT_OBJID = #{prodObjId},
T.CATEGORY_OBJID = #{categoryObjId},
T.ATTRIBUTE_NAME = #{attributeName},
T.CHECK_OPTION = #{checkOption},
T.CHECK_BASE = #{checkBase},
T.SEQ = #{seqNum},
T.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.PRODUCT_OBJID,
T.CATEGORY_OBJID,
T.ATTRIBUTE_NAME,
T.CHECK_OPTION,
T.CHECK_BASE,
T.WRITER,
T.REGDATE,
T.SEQ,
T.STATUS
)
VALUES
(
#{objId},
#{prodObjId},
#{categoryObjId},
#{attributeName},
#{checkOption},
#{checkBase},
#{writer},
SYSDATE,
#{seqNum},
#{status}
)
</update>
<!-- //설계체크리스트 소분류 상태 수정 -->
<update id="changeDesignCheckListAttributeStatus" parameterType="map">
UPDATE DESIGN_CHECK_LIST_ATTRIBUTE SET STATUS = #{status} WHERE OBJID = #{objId}
</update>
<!-- 문서 기준정보 중복 여부를 확인한다. -->
<select id="checkDuplicateTranslateDoc" parameterType="map" resultType="map">
SELECT COUNT(1) CNT FROM(
SELECT
OBJID,
DOC_TITLE,
DOC_TYPE,
IS_PRODUCTION,
IS_PRODUCT_MNG,
IS_INTEGRITY,
IS_COMPONENT_BUY,
IS_PRODUCT_QUALITY,
REGDATE,
STATUS,
WRITER
FROM PMS_TRANSLATE_DOC_MNG
WHERE OBJID != #{objId}
AND DOC_TITLE = #{docTitle}
)
</select>
<!-- 문서 기준정보를 저장한다. -->
<update id="saveTranslateDoc" parameterType="map">
MERGE INTO PMS_TRANSLATE_DOC_MNG T USING DUAL ON ( T.OBJID = #{objId})
WHEN MATCHED THEN
UPDATE
SET
T.DOC_TITLE = #{docTitle},
T.DOC_TYPE = #{docType},
T.TRANSLATE_TYPE = #{translateType},
T.HAND_OVER_DEPT = #{deptId},
T.IS_PRODUCTION = #{isProduction},
T.IS_PRODUCT_MNG = #{isProductMng},
T.IS_INTEGRITY = #{isIntegrity},
T.IS_COMPONENT_BUY = #{isComponentBuy},
T.IS_PRODUCT_QUALITY = #{isProductQuality},
T.SEQ = #{seq},
T.STATUS = #{status}
WHEN NOT MATCHED THEN
INSERT
(
T.OBJID,
T.DOC_TITLE,
T.DOC_TYPE,
T.TRANSLATE_TYPE,
T.HAND_OVER_DEPT,
T.IS_PRODUCTION,
T.IS_PRODUCT_MNG,
T.IS_INTEGRITY,
T.IS_COMPONENT_BUY,
T.IS_PRODUCT_QUALITY,
T.SEQ,
T.REGDATE,
T.STATUS,
T.WRITER
)
VALUES
(
#{objId},
#{docTitle},
#{docType},
#{translateType},
#{deptId},
#{isProduction},
#{isProductMng},
#{isIntegrity},
#{isComponentBuy},
#{isProductQuality},
#{seq},
SYSDATE,
#{status},
#{writer}
)
</update>
<!-- 문서 기준정보의 상세 정보를 가져온다. -->
<select id="getTranslateDocInfo" parameterType="map" resultType="map">
SELECT
OBJID,
DOC_TITLE,
DOC_TYPE,
DECODE(TRANSLATE_TYPE, 'facility', '설계', 'quality', '품질', 'etc', '기타', TRANSLATE_TYPE) TRANSLATE_TYPE_TITLE,
TRANSLATE_TYPE,
CASE
WHEN UPPER(DOC_TYPE) = 'FILE' THEN '파일'
WHEN UPPER(DOC_TYPE) = 'OUTPUT' THEN '출력'
ELSE ''
END DOC_TYPE_TITLE,
IS_PRODUCTION,
CASE
WHEN UPPER(IS_PRODUCTION) = 'TARGET' THEN '대상'
WHEN UPPER(IS_PRODUCTION) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCTION_TITLE,
IS_PRODUCT_MNG,
CASE
WHEN UPPER(IS_PRODUCT_MNG) = 'TARGET' THEN '대상'
WHEN UPPER(IS_PRODUCT_MNG) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCT_MNG_TITLE,
IS_INTEGRITY,
CASE
WHEN UPPER(IS_INTEGRITY) = 'TARGET' THEN '대상'
WHEN UPPER(IS_INTEGRITY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_INTEGRITY_TITLE,
IS_COMPONENT_BUY,
CASE
WHEN UPPER(IS_COMPONENT_BUY) = 'TARGET' THEN '대상'
WHEN UPPER(IS_COMPONENT_BUY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_COMPONENT_BUY_TITLE,
IS_PRODUCT_QUALITY,
CASE
WHEN UPPER(IS_PRODUCT_QUALITY) = 'TARGET' THEN '대상'
WHEN UPPER(IS_PRODUCT_QUALITY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCT_QUALITY_TITLE,
REGDATE,
STATUS,
CASE
WHEN UPPER(STATUS) = 'INACTIVE' THEN '비활성화'
WHEN UPPER(STATUS) = 'ACTIVE' THEN '활성화'
ELSE ''
END STATUS_TITLE,
HAND_OVER_DEPT,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = HAND_OVER_DEPT) AS HAND_OVER_DEPT_NAME,
WRITER,
SEQ
FROM PMS_TRANSLATE_DOC_MNG
WHERE 1=1
AND OBJID = #{objId}
</select>
<!-- 문서 기준정보의 목록을 가져온다. -->
<select id="getTranslateDocList" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT AA.* , ROW_NUMBER() OVER(ORDER BY SEQ ASC NULLS LAST) RNUM
FROM(
SELECT A.*
FROM(
SELECT
OBJID,
DOC_TITLE,
DOC_TYPE,
DECODE(TRANSLATE_TYPE, 'facility', '설계', 'quality', '품질', 'etc', '기타', TRANSLATE_TYPE) TRANSLATE_TYPE_TITLE,
TRANSLATE_TYPE,
CASE
WHEN UPPER(DOC_TYPE) = 'FILE' THEN '파일'
WHEN UPPER(DOC_TYPE) = 'OUTPUT' THEN '출력'
ELSE ''
END DOC_TYPE_TITLE,
IS_PRODUCTION,
CASE
WHEN UPPER(IS_PRODUCTION) = 'TARGET' THEN '대상'
WHEN UPPER(IS_PRODUCTION) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCTION_TITLE,
IS_PRODUCT_MNG,
CASE
WHEN UPPER(IS_PRODUCT_MNG) = 'TARGET' THEN '대상'
WHEN UPPER(IS_PRODUCT_MNG) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCT_MNG_TITLE,
IS_INTEGRITY,
CASE
WHEN UPPER(IS_INTEGRITY) = 'TARGET' THEN '대상'
WHEN UPPER(IS_INTEGRITY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_INTEGRITY_TITLE,
IS_COMPONENT_BUY,
CASE
WHEN UPPER(IS_COMPONENT_BUY) = 'TARGET' THEN '대상'
WHEN UPPER(IS_COMPONENT_BUY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_COMPONENT_BUY_TITLE,
IS_PRODUCT_QUALITY,
CASE
WHEN UPPER(IS_PRODUCT_QUALITY) = 'TARGET' THEN '대상'
WHEN UPPER(IS_PRODUCT_QUALITY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCT_QUALITY_TITLE,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
REGDATE REGDATE_ORG,
SEQ,
STATUS,
DECODE (STATUS, 'active', '활성화', 'inActive', '비활성화', STATUS) STATUS_STR,
HAND_OVER_DEPT,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = HAND_OVER_DEPT) AS HAND_OVER_DEPT_NAME,
WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) USER_NAME
FROM PMS_TRANSLATE_DOC_MNG
WHERE 1=1
)A
WHERE 1=1
<if test="search_testTypeName != null and search_testTypeName != ''">
AND UPPER(DOC_TITLE) LIKE UPPER('%${search_testTypeName}%')
</if>
<if test="docType != null and docType != ''">
AND UPPER(DOC_TYPE) = UPPER(#{docType})
</if>
<if test="translateType != null and translateType != ''">
AND UPPER(TRANSLATE_TYPE) = UPPER(#{translateType})
</if>
<if test="search_deptName != null and search_deptName != ''">
AND UPPER(HAND_OVER_DEPT_NAME) LIKE UPPER('%${search_deptName}%')
</if>
<if test="isProduction != null and isProduction != ''">
AND UPPER(IS_PRODUCTION) = UPPER(#{isProduction})
</if>
<if test="isProductMng != null and isProductMng != ''">
AND UPPER(IS_PRODUCT_MNG) = UPPER(#{isProductMng})
</if>
<if test="isIntegrity != null and isIntegrity != ''">
AND UPPER(IS_INTEGRITY) = UPPER(#{isIntegrity})
</if>
<if test="isComponentBuy != null and isComponentBuy != ''">
AND UPPER(IS_COMPONENT_BUY) = UPPER(#{isComponentBuy})
</if>
<if test="isProductQuality != null and isProductQuality != ''">
AND UPPER(IS_PRODUCT_QUALITY) = UPPER(#{isProductQuality})
</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>
)AA
) WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel'">
<![CDATA[ AND RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel'">
<![CDATA[ AND RNUM >= #{PAGE_START} ]]>
</if>
</select>
<!-- 문서 기준정보의 Count를 가져온다. -->
<select id="getTranslateDocListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM(
SELECT
OBJID,
DOC_TITLE,
DOC_TYPE,
DECODE(TRANSLATE_TYPE, 'facility', '설계', 'quality', '품질', 'etc', '기타', TRANSLATE_TYPE) TRANSLATE_TYPE_TITLE,
TRANSLATE_TYPE,
CASE
WHEN UPPER(DOC_TYPE) = 'FILE' THEN '파일'
WHEN UPPER(DOC_TYPE) = 'OUTPUT' THEN '출력'
ELSE ''
END DOC_TYPE_TITLE,
IS_PRODUCTION,
CASE
WHEN UPPER(IS_PRODUCTION) = 'TARGET' THEN '대상'
WHEN UPPER(IS_PRODUCTION) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCTION_TITLE,
IS_PRODUCT_MNG,
CASE
WHEN UPPER(IS_PRODUCT_MNG) = 'TARGET' THEN '대상'
WHEN UPPER(IS_PRODUCT_MNG) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCT_MNG_TITLE,
IS_INTEGRITY,
CASE
WHEN UPPER(IS_INTEGRITY) = 'TARGET' THEN '대상'
WHEN UPPER(IS_INTEGRITY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_INTEGRITY_TITLE,
IS_COMPONENT_BUY,
CASE
WHEN UPPER(IS_COMPONENT_BUY) = 'TARGET' THEN '대상'
WHEN UPPER(IS_COMPONENT_BUY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_COMPONENT_BUY_TITLE,
IS_PRODUCT_QUALITY,
CASE
WHEN UPPER(IS_PRODUCT_QUALITY) = 'TARGET' THEN '대상'
WHEN UPPER(IS_PRODUCT_QUALITY) = 'NONTARGET' THEN '비대상'
ELSE ''
END IS_PRODUCT_QUALITY_TITLE,
TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE,
REGDATE REGDATE_ORG,
SEQ,
STATUS,
DECODE (STATUS, 'active', '활성화', 'inActive', '비활성화', STATUS) STATUS_STR,
HAND_OVER_DEPT,
(SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = HAND_OVER_DEPT) AS HAND_OVER_DEPT_NAME,
WRITER,
(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = WRITER) DEPT_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = WRITER) USER_NAME
FROM PMS_TRANSLATE_DOC_MNG
WHERE 1=1
) WHERE 1=1
<if test="search_testTypeName != null and search_testTypeName != ''">
AND UPPER(DOC_TITLE) LIKE UPPER('%${search_testTypeName}%')
</if>
<if test="docType != null and docType != ''">
AND UPPER(DOC_TYPE) = UPPER(#{docType})
</if>
<if test="translateType != null and translateType != ''">
AND UPPER(TRANSLATE_TYPE) = UPPER(#{translateType})
</if>
<if test="search_deptName != null and search_deptName != ''">
AND UPPER(HAND_OVER_DEPT_NAME) LIKE UPPER('%${search_deptName}%')
</if>
<if test="isProduction != null and isProduction != ''">
AND UPPER(IS_PRODUCTION) = UPPER(#{isProduction})
</if>
<if test="isProductMng != null and isProductMng != ''">
AND UPPER(IS_PRODUCT_MNG) = UPPER(#{isProductMng})
</if>
<if test="isIntegrity != null and isIntegrity != ''">
AND UPPER(IS_INTEGRITY) = UPPER(#{isIntegrity})
</if>
<if test="isComponentBuy != null and isComponentBuy != ''">
AND UPPER(IS_COMPONENT_BUY) = UPPER(#{isComponentBuy})
</if>
<if test="isProductQuality != null and isProductQuality != ''">
AND UPPER(IS_PRODUCT_QUALITY) = UPPER(#{isProductQuality})
</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>
) WHERE 1=1
</select>
<!-- //설계체크리스트 소분류 상태 수정 -->
<update id="changeTranslateDocListAttributeStatus" parameterType="map">
UPDATE PMS_TRANSLATE_DOC_MNG SET STATUS = #{status} WHERE OBJID = #{objId}
</update>
<!-- //유저정보 history -->
<select id="getUserHistoryList" parameterType="map" resultType="map">
SELECT
A.*
FROM (
SELECT
A.*,
ROW_NUMBER() OVER (ORDER BY RM DESC) AS RNUM
FROM (
SELECT
T.*,
ROW_NUMBER() OVER (ORDER BY REGDATE DESC) AS RM,
(SELECT USER_NAME FROM USER_INFO UI WHERE T.WRITER = UI.USER_ID) AS WRITER_NAME,
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS REG_DATE_TITLE
FROM
USER_INFO_HISTORY T
WHERE USER_ID = #{user_id}
) A
WHERE 1=1
) A
WHERE 1=1
<if test="PAGE_END != null">
<![CDATA[ AND RNUM::integer <= #{PAGE_END}::integer ]]>
</if>
<if test="PAGE_START != null">
<![CDATA[ AND RNUM::integer >= #{PAGE_START}::integer ]]>
</if>
</select>
<!-- //유저정보 history -->
<select id="getUserHistoryListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM USER_INFO_HISTORY
WHERE USER_ID = #{user_id}
) A
WHERE 1=1
</select>
<!-- //임율정보 history -->
<select id="ratecalMngHistoryList" parameterType="map" resultType="map">
SELECT A.*
FROM (
SELECT A.*
,TO_CHAR(A.REG_DATE, 'YYYY-MM-DD') AS REGDATE
,ROW_NUMBER() OVER (ORDER BY REG_DATE DESC) RNUM
FROM (
SELECT
(SELECT USER_ID FROM RATECAL_MGMT O WHERE O.RATECAL_MGMT_OBJID = T.RATECAL_MGMT_OBJID) AS USER_ID
, OLD_DATA
, NEW_DATA
, REG_DATE
FROM RATECAL_MGMT_HISTORY T
WHERE RATECAL_MGMT_OBJID = #{objId}::numeric
) A
WHERE 1=1
) A
WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</select>
<!-- //임율정보 history -->
<select id="ratecalMngHistoryListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM RATECAL_MGMT_HISTORY
WHERE RATECAL_MGMT_OBJID = #{objId}::numeric
) A
WHERE 1=1
</select>
<!-- //임율정보 history -->
<select id="deptHistoryList" parameterType="map" resultType="map">
SELECT
A.*
FROM (
SELECT
A.*,
ROW_NUMBER() OVER (ORDER BY RM DESC) AS RNUM
FROM (
SELECT
T.*,
ROW_NUMBER() OVER (ORDER BY REG_DATE) AS RM,
(SELECT USER_NAME FROM USER_INFO UI WHERE T.WRITER = UI.USER_ID) AS WRITER_NAME,
TO_CHAR(T.REG_DATE, 'YYYY-MM-DD') AS REG_DATE_TITLE
FROM
DEPT_INFO_HISTORY T
WHERE PARENT_CODE = #{dept_code}
) A
WHERE 1=1
) A
WHERE 1=1
<if test="PAGE_END != null and PAGE_END != ''">
<![CDATA[ AND RNUM::integer <= #{PAGE_END}::integer ]]>
</if>
<if test="PAGE_START != null and PAGE_START != ''">
<![CDATA[ AND RNUM::integer >= #{PAGE_START}::integer ]]>
</if>
</select>
<!-- //임율정보 history -->
<select id="deptHistoryListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float as TOTAL_CNT
FROM
DEPT_INFO_HISTORY T
WHERE PARENT_CODE = #{dept_code}
) A
WHERE 1=1
</select>
<!-- //권한 history -->
<select id="authHistoryList" parameterType="map" resultType="map">
SELECT A.*
FROM (
SELECT
A.*,
ROW_NUMBER() OVER (ORDER BY RM DESC) AS RNUM
FROM (
SELECT
AMH.*,
ROW_NUMBER() OVER (ORDER BY REG_DATE) AS RM,
(SELECT USER_NAME FROM USER_INFO UI WHERE AMH.USER_ID = UI.USER_ID) AS USER_NAME,
(SELECT USER_NAME FROM USER_INFO UI WHERE AMH.WRITER = UI.USER_ID) AS WRITER_NAME,
TO_CHAR(AMH.REG_DATE, 'YYYY-MM-DD') AS REG_DATE_TITLE
FROM
AUTHORITY_MASTER_HISTORY AMH
WHERE PARENT_OBJID = #{objId}::numeric
) A
WHERE 1=1
) A
WHERE 1=1
<if test="PAGE_END != null and PAGE_END != ''">
<![CDATA[ AND RNUM::integer <= #{PAGE_END}::integer ]]>
</if>
<if test="PAGE_START != null and PAGE_START != ''">
<![CDATA[ AND RNUM::integer >= #{PAGE_START}::integer ]]>
</if>
</select>
<!-- //권한 history -->
<select id="authHistoryListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::numeric as TOTAL_CNT
FROM
AUTHORITY_MASTER_HISTORY
WHERE PARENT_OBJID = #{objId}::numeric
) A
WHERE 1=1
</select>
<!-- //권한 history -->
<select id="codeHistoryList" parameterType="map" resultType="map">
SELECT
A.*
FROM (
SELECT
A.*,
ROW_NUMBER() OVER (ORDER BY RM DESC) AS RNUM
FROM (
SELECT
T.*,
ROW_NUMBER() OVER (ORDER BY REGDATE) AS RM,
(SELECT USER_NAME FROM USER_INFO UI WHERE T.WRITER = UI.USER_ID) AS WRITER_NAME,
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS REGDATE_TITLE
FROM
COMM_CODE_HISTORY T
WHERE TARGET_OBJID = #{objId}::numeric
) A
WHERE 1=1
) A
WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</select>
<!-- //권한 history -->
<select id="codeHistoryListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::numeric as TOTAL_CNT
FROM
COMM_CODE_HISTORY T
WHERE TARGET_OBJID = #{objId}::numeric
) A
WHERE 1=1
</select>
<select id="SrrateMngList" parameterType="map" resultType="map">
select
area
,from_value
,to_value
,sr_rate
from profit_loss_srrate
order by area desc,from_value asc
</select>
<delete id="DeleteSrrateMng" parameterType="map">
DELETE FROM profit_loss_srrate
</delete>
<insert id="insertSrrateMng" parameterType="map">
INSERT INTO
PROFIT_LOSS_SRRATE
( AREA
,FROM_VALUE
,TO_VALUE
,SR_RATE)
VALUES (
#{area}
,#{from_value}::numeric
,#{to_value}::numeric
,#{sr_rate}::numeric
)
</insert>
<select id="LossRateList" parameterType="map" resultType="map">
select
area
,division
,from_value
,to_value
,lossrate
from profit_loss_lossrate
order by area desc,from_value asc
</select>
<delete id="DeleteLossRate" parameterType="map">
DELETE FROM profit_loss_lossrate
</delete>
<insert id="insertLossRate" parameterType="map">
INSERT INTO
profit_loss_lossrate
( AREA
,DIVISION
,FROM_VALUE
,TO_VALUE
,LOSSRATE)
VALUES (
#{area}
,#{division}
,#{from_value}::numeric
,#{to_value}::numeric
,#{lossrate}::numeric
)
</insert>
<select id="MachineTimeList" parameterType="map" resultType="map">
select
area
,from_value
,to_value
,second
from profit_loss_machine
order by area desc,from_value asc
</select>
<delete id="DeleteMachineTime" parameterType="map">
DELETE FROM profit_loss_machine
</delete>
<insert id="insertMachineTime" parameterType="map">
INSERT INTO
PROFIT_LOSS_MACHINE
( AREA
,FROM_VALUE
,TO_VALUE
,SECOND)
VALUES (
#{area}
,#{from_value}::numeric
,#{to_value}::numeric
,#{second}::numeric
)
</insert>
<select id="basicCoolingTimeList" parameterType="map" resultType="map">
select
area
,material
,second
from profit_loss_coolingtime
order by second
</select>
<delete id="DeletebasicCoolingTime" parameterType="map">
DELETE FROM profit_loss_coolingtime
</delete>
<insert id="insertbasicCoolingTime" parameterType="map">
INSERT INTO
PROFIT_LOSS_COOLINGTIME
( AREA
,MATERIAL
,SECOND
)
VALUES (
#{area}
,#{material}
,#{second}::numeric
)
</insert>
<select id="productdeptList" parameterType="map" resultType="map">
select
area
,from_value
,to_value
,coefficient
from profit_loss_depth
order by area desc,from_value asc
</select>
<delete id="Deleteproductdept" parameterType="map">
DELETE FROM profit_loss_depth
</delete>
<insert id="insertproductdept" parameterType="map">
INSERT INTO
PROFIT_LOSS_DEPTH
( AREA
,FROM_VALUE
,TO_VALUE
,COEFFICIENT)
VALUES (
#{area}
,#{from_value}::numeric
,#{to_value}::numeric
,#{coefficient}::numeric
)
</insert>
<select id="coefficientList" parameterType="map" resultType="map">
select
area
,from_value
,to_value
,coefficient
from profit_loss_coefficient
order by area desc,from_value asc
</select>
<delete id="Deletecoefficient" parameterType="map">
DELETE FROM profit_loss_coefficient
</delete>
<insert id="insertcoefficient" parameterType="map">
INSERT INTO
PROFIT_LOSS_COEFFICIENT
( AREA
,FROM_VALUE
,TO_VALUE
,COEFFICIENT)
VALUES (
#{area}
,#{from_value}::numeric
,#{to_value}::numeric
,#{coefficient}::numeric
)
</insert>
<select id="weightList" parameterType="map" resultType="map">
select
area
,from_value
,to_value
,thickness
from profit_loss_weight
order by area desc,from_value asc
</select>
<delete id="DeleteweightList" parameterType="map">
DELETE FROM profit_loss_weight
</delete>
<insert id="insertweightList" parameterType="map">
INSERT INTO
PROFIT_LOSS_WEIGHT
( AREA
,FROM_VALUE
,TO_VALUE
,THICKNESS)
VALUES (
#{area}
,#{from_value}::numeric
,#{to_value}::numeric
,#{thickness}::numeric
)
</insert>
<select id="PreTimeList" parameterType="map" resultType="map">
select
area
,from_value
,to_value
,person
,pretime
from profit_loss_pretime
</select>
<delete id="DeletePreTimeList" parameterType="map">
DELETE FROM profit_loss_pretime
</delete>
<insert id="insertPreTimeList" parameterType="map">
INSERT INTO
PROFIT_LOSS_PRETIME
( AREA
,FROM_VALUE
,TO_VALUE
,PERSON
,PRETIME)
VALUES (
#{area}
,#{from_value}::numeric
,#{to_value}::numeric
,#{person}::numeric
,#{pretime}::numeric
)
</insert>
<!-- 탬플릿 리스트 Count를 가져온다. -->
<select id="gettemplateListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM(
SELECT T.*
FROM(
SELECT
T.OBJID
,T.template_code
,(SELECT o.code_name from comm_code o WHERE T.TEMPLATE_CODE = o.code_id) AS TEMPLATE_CODE_NAME
,(SELECT o.code_name from comm_code o WHERE T.TEMPLATE_CODE_DETAIL = o.code_id) AS TEMPLATE_CODE_DETAIL_NAME
,T.title
,TO_CHAR(T.REG_DATE,'YYYY-MM-DD') AS reg_date
,case UPPER(T.STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else STATUS
end STATUS_STR
,T.STATUS
FROM template_mng as T
WHERE 1=1
) T WHERE 1=1
<if test="temp_name != null and temp_name != ''">
AND UPPER(T.TEMPLATE_CODE_DETAIL_NAME) LIKE UPPER('%${temp_name}%')
</if>
<if test="searchStatus != null and searchStatus != ''">
AND UPPER(T.STATUS) LIKE UPPER('%${searchStatus}%')
</if>) T WHERE 1=1
)A WHERE 1=1
</select>
<!-- 공급업체에 해당하는 정보 목록을 가져온다. -->
<select id="gettemplateList" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT T.*, ROW_NUMBER() OVER(ORDER BY REG_DATE DESC) RNUM
FROM(
SELECT T.*
FROM(
SELECT
T.OBJID
,T.template_code
,(SELECT o.code_name from comm_code o WHERE T.TEMPLATE_CODE = o.code_id) AS TEMPLATE_CODE_NAME
<!-- ,contents -->
,(SELECT o.code_name from comm_code o WHERE T.TEMPLATE_CODE_DETAIL = o.code_id) AS TEMPLATE_CODE_DETAIL_NAME
,T.title
,TO_CHAR(T.REG_DATE,'YYYY-MM-DD') AS reg_date
,case UPPER(T.STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else STATUS
end STATUS_STR
,T.STATUS
FROM template_mng as T
WHERE 1=1
) T WHERE 1=1
<if test="temp_name != null and temp_name != ''">
AND UPPER(T.TEMPLATE_CODE_DETAIL_NAME) LIKE UPPER('%${temp_name}%')
</if>
<if test="searchStatus != null and searchStatus != ''">
AND UPPER(T.STATUS) LIKE UPPER('%${searchStatus}%')
</if>
) T WHERE 1=1
) A WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</select>
<!-- 템플릿 단건 정보를 가져온다. -->
<select id="gettemplateMngInfo" parameterType="map" resultType="map">
SELECT
T.OBJID
,T.TEMPLATE_CODE
,T.TITLE
,TO_CHAR(T.REG_DATE,'YYYY-MM-DD') AS reg_date
,T.STATUS
,T.CONTENTS
,T.TEMPLATE_CODE_DETAIL
FROM template_mng as T
WHERE T.OBJID = #{objid}::numeric
</select>
<!-- 템플릿 리스트 정보를 가져온다. -->
<select id="gettemplateMngCodeInfo" parameterType="map" resultType="map">
SELECT
T.OBJID
,T.TEMPLATE_CODE
,T.TITLE
,TO_CHAR(T.REG_DATE,'YYYY-MM-DD') AS reg_date
,T.STATUS
,T.CONTENTS
,T.TEMPLATE_CODE_DETAIL
FROM template_mng as T
WHERE T.TEMPLATE_CODE_DETAIL = #{template_code_detail}
</select>
<!-- 템플릿 수정-->
<update id="templateFormSave" parameterType="map">
INSERT INTO TEMPLATE_MNG
(
OBJID
,TEMPLATE_CODE
,CONTENTS
,REG_DATE
,STATUS
,TEMPLATE_CODE_DETAIL
)
VALUES
(
#{objid}::numeric
,#{template_code}
,#{contents}
,now()
,#{status}
,#{template_code_detail}
) ON CONFLICT (OBJID) DO
UPDATE
SET
TEMPLATE_CODE = #{template_code}
,CONTENTS = #{contents}
,STATUS = #{status}
,TEMPLATE_CODE_DETAIL = #{template_code_detail}
</update>
<!-- 템플릿 삭제 -->
<update id="deleteTemplateInfo" parameterType="map">
DELETE FROM TEMPLATE_MNG WHERE OBJID = #{objId}::NUMERIC
</update>
<!-- 공급업체에 상태 업데이트 -->
<update id="changeTemplateStatus" parameterType="map">
UPDATE TEMPLATE_MNG SET STATUS = #{status} WHERE OBJID = #{objid}::numeric
</update>
<update id="mergeSupplyCharger" parameterType="map">
INSERT INTO SUPPLY_CHARGER_MNG
(
OBJID,
CHARGER_TYPE,
SUPPLY_OBJID,
CHARGER_NAME,
PHONE,
TEL,
FAX,
EMAIL,
WRITER,
REGDATE
) VALUES (
#{OBJID},
#{CHARGER_TYPE},
#{SUPPLY_OBJID},
#{CHARGER_NAME},
#{PHONE},
#{TEL},
#{FAX},
#{EMAIL},
#{WRITER},
NOW()
) ON CONFLICT (OBJID) DO
UPDATE
SET
CHARGER_TYPE = #{CHARGER_TYPE},
SUPPLY_OBJID = #{SUPPLY_OBJID},
CHARGER_NAME = #{CHARGER_NAME},
PHONE = #{PHONE},
TEL = #{TEL},
FAX = #{FAX},
EMAIL = #{EMAIL},
WRITER = #{WRITER}
</update>
<delete id="initSupplyCharger" parameterType="map">
DELETE FROM SUPPLY_CHARGER_MNG WHERE SUPPLY_OBJID = #{objid}
</delete>
<update id="deletesupplyMngInfo" parameterType="map">
DELETE FROM ADMIN_SUPPLY_MNG WHERE OBJID = #{objId}::NUMERIC
</update>
<update id="deleteUserInfo" parameterType="map">
DELETE FROM USER_INFO WHERE USER_ID = #{objId}
</update>
<!--경영가이드 목록 -->
<select id ="getManagementGuideList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT *
FROM
(
SELECT
YYYY_Q
,SUBSTR(YYYY_Q, 3,2)||'-'||SUBSTR(YYYY_Q, 5) YY_MM
,REGDATE
,EDITDATE
,WRITER
,EDITER
,CONTENTS
,USER_NAME(WRITER ) AS WRITER_NAME
FROM COMM_MANAGEMENT_GUIDE AS T
WHERE 1=1
<if test="YYYY_Q !=null and YYYY_Q != '' ">
AND T.YYYY_Q = #{YYYY_Q}
</if>
<if test="YYYY_Qs !=null and YYYY_Qs != '' ">
AND POSITION(T.YYYY_Q||',' IN #{YYYY_Qs}||',') > 0
</if>
<if test="NATION_CODE_LIKE !=null and NATION_CODE_LIKE != '' ">
AND UPPER(NATION_CODE) LIKE '%' || UPPER(#{NATION_CODE_LIKE}) || '%'
</if>
) AS T
WHERE 1=1
ORDER BY YYYY_Q DESC
</select>
<!-- //경영가이드 상세조회 -->
<select id="getManagementGuide" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
YYYY_Q
,REGDATE
,EDITDATE
,WRITER
,EDITER
,CONTENTS
,USER_NAME(WRITER ) AS WRITER_NAME
FROM COMM_MANAGEMENT_GUIDE AS T
WHERE T.YYYY_Q = #{YYYY_Q}
</select>
<!-- //경영가이드 저장 -->
<insert id="mergeManagementGuideInfo" parameterType="map">
MERGE INTO COMM_MANAGEMENT_GUIDE T
USING (SELECT
#{YYYY_Q} AS YYYY_Q
) AS T1
ON T.YYYY_Q = T1.YYYY_Q
WHEN MATCHED THEN
UPDATE SET
EDITDATE = NOW()
,EDITER = #{WRITER}
,CONTENTS = #{CONTENTS}
WHEN NOT MATCHED THEN
INSERT (
YYYY_Q
,REGDATE
,EDITDATE
,WRITER
,EDITER
,CONTENTS
) VALUES (
#{YYYY_Q}
,NOW()
,NULL
,#{WRITER}
,NULL
,#{CONTENTS}
)
</insert>
<!-- //경영가이드 삭제 -->
<delete id="deleteManagementGuide" parameterType="map">
DELETE FROM COMM_MANAGEMENT_GUIDE
WHERE YYYY_Q = #{YYYY_Q}
</delete>
<!--환율 갯수 구함 -->
<select id="getExchangeRateListCnt" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}::NUMERIC) MAX_PAGE_SIZE
,TOTAL_CNT
FROM (
SELECT COUNT(1) TOTAL_CNT
FROM(
SELECT
YYYY_MM
FROM COMM_EXCHANGE_RATE
WHERE 1=1
) AS TBL WHERE 1=1
) AS A WHERE 1=1
</select>
<!--환율 목록 -->
<select id ="getExchangeRateList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT *
FROM
(
SELECT
YYYY_MM
,SUBSTR(YYYY_MM, 3,2)||'-'||SUBSTR(YYYY_MM, 5) YY_MM
,YYYY_MM_DD
,REGDATE
,EDITDATE
,WRITER
,EDITER
<!--
,NATION_CODE
,COST
-->
,COST_USD
,COST_EU
,COST_JAPAN
,COST_CHINA
,COST_VIETNAM
,COST_RUB
,COST_INR
,COST_THB
,COST_HKD
,COST_USD USD
,COST_EU EUR
,COST_JAPAN JPY
,COST_CHINA CNH
,COST_VIETNAM VTN
,COST_RUB RUB
,COST_INR INR
,COST_THB THB
,COST_HKD HKD
,USER_NAME(WRITER ) AS WRITER_NAME
<!--
,(SELECT O.USER_NAME FROM USER_INFO O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
-->
FROM COMM_EXCHANGE_RATE AS T
WHERE 1=1
<if test="YYYY !=null and YYYY != '' ">
AND T.YYYY_MM LIKE #{YYYY} || '%'
</if>
<if test="MM !=null and MM != '' ">
AND T.YYYY_MM LIKE '%' || #{MM}
</if>
<if test="YYYY_MM !=null and YYYY_MM != '' ">
AND T.YYYY_MM = #{YYYY_MM}
</if>
<if test="YYYY_MM_DD !=null and YYYY_MM_DD != '' ">
AND T.YYYY_MM_DD = #{YYYY_MM_DD}
</if>
<if test="YYYY_MMs !=null and YYYY_MMs != '' ">
AND POSITION(T.YYYY_MM||',' IN #{YYYY_MMs}||',') > 0
</if>
<if test="NATION_CODE_LIKE !=null and NATION_CODE_LIKE != '' ">
AND UPPER(NATION_CODE) LIKE '%' || UPPER(#{NATION_CODE_LIKE}) || '%'
</if>
) AS T
WHERE 1=1
ORDER BY YYYY_MM DESC
</select>
<!-- //환율 상세조회 -->
<select id="getExchangeRateInfo" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
YYYY_MM
,REGDATE
,EDITDATE
,WRITER
,EDITER
<!--
,NATION_CODE
,COST
-->
,COST_USD
,COST_EU
,COST_JAPAN
,COST_CHINA
,COST_VIETNAM
,COST_RUB
,COST_INR
,USER_NAME(WRITER ) AS WRITER_NAME
FROM COMM_EXCHANGE_RATE AS T
WHERE T.YYYY_MM = #{YYYY_MM}
<if test="NATION_CODE !=null and NATION_CODE != '' ">
AND T.NATION_CODE = #{NATION_CODE}
</if>
</select>
<!-- //환율 저장 -->
<insert id="mergeExchangeRate" parameterType="map">
<!--
MERGE INTO COMM_EXCHANGE_RATE T
USING (SELECT
#{YYYY_MM} AS YYYY_MM
,#{NATION_CODE} AS NATION_CODE
) AS T1
ON T.YYYY_MM = T1.YYYY_MM
AND T.NATION_CODE = T1.NATION_CODE
WHEN MATCHED THEN
-->
WITH UPSERT AS (
UPDATE COMM_EXCHANGE_RATE
SET
EDITDATE = NOW()
,EDITER = #{WRITER}
<!--
,COST = #{COST}
-->
,COST_USD = #{COST_USD}
,COST_EU = #{COST_EU}
,COST_JAPAN = #{COST_JAPAN}
,COST_CHINA = #{COST_CHINA}
,COST_VIETNAM = #{COST_VIETNAM}
,COST_RUB = #{COST_RUB}
,COST_INR = #{COST_INR}
WHERE YYYY_MM = #{YYYY_MM}
)
<!--
WHEN NOT MATCHED THEN
-->
INSERT INTO COMM_EXCHANGE_RATE
(
YYYY_MM
,REGDATE
,EDITDATE
,WRITER
,EDITER
<!--
,NATION_CODE
,COST
-->
,COST_USD
,COST_EU
,COST_JAPAN
,COST_CHINA
,COST_VIETNAM
,COST_RUB
,COST_INR
)
<!--
VALUES (
-->
SELECT
#{YYYY_MM}
,NOW()
,NULL
,#{WRITER}
,NULL
<!--
,#{NATION_CODE}
,#{COST}
-->
,#{COST_USD}
,#{COST_EU}
,#{COST_JAPAN}
,#{COST_CHINA}
,#{COST_VIETNAM}
,#{COST_RUB}
,#{COST_INR}
WHERE NOT EXISTS (
SELECT
*
FROM COMM_EXCHANGE_RATE
WHERE YYYY_MM = #{YYYY_MM}
)
<!--
)
-->
</insert>
<!-- //환율 저장(한국수출입은행 API기준) -->
<insert id="mergeExchangeRateApi" parameterType="map">
WITH UPSERT AS (
UPDATE COMM_EXCHANGE_RATE
SET
EDITDATE = NOW()
,API_DATE = NOW()
,EDITER = #{WRITER}
<!--
,COST = #{COST}
-->
,COST_USD = #{USD}
,COST_EU = #{EUR}
,COST_JAPAN = #{JPY}
,COST_CHINA = #{CNH}
,COST_VIETNAM = #{VTN}
,COST_RUB = #{RUB}
,COST_INR = #{INR}
,COST_THB = #{THB}
,COST_HKD = #{HKD}
WHERE YYYY_MM = #{YYYY_MM}
AND YYYY_MM_DD = #{YYYY_MM_DD}
)
<!--
WHEN NOT MATCHED THEN
-->
INSERT INTO COMM_EXCHANGE_RATE
(
YYYY_MM
,YYYY_MM_DD
,REGDATE
,EDITDATE
,API_DATE
,WRITER
,EDITER
<!--
,NATION_CODE
,COST
-->
,COST_USD
,COST_EU
,COST_JAPAN
,COST_CHINA
,COST_VIETNAM
,COST_RUB
,COST_INR
,COST_THB
,COST_HKD
)
SELECT
#{YYYY_MM}
,#{YYYY_MM_DD}
,NOW()
,NULL
,NOW()
,#{WRITER}
,NULL
<!--
,#{NATION_CODE}
,#{COST}
-->
,#{USD}
,#{EUR}
,#{JPY}
,#{CNH}
,#{VTN}
,#{RUB}
,#{INR}
,#{THB}
,#{HKD}
WHERE NOT EXISTS (
SELECT
*
FROM COMM_EXCHANGE_RATE
WHERE YYYY_MM = #{YYYY_MM}
AND YYYY_MM_DD = #{YYYY_MM_DD}
)
</insert>
<!-- //환율 삭제 -->
<delete id="deleteExchangeRate" parameterType="map">
DELETE FROM COMM_EXCHANGE_RATE
WHERE YYYY_MM = #{YYYY_MM}
<if test="NATION_CODE !=null and NATION_CODE != '' ">
AND NATION_CODE = #{NATION_CODE}
</if>
</delete>
<select id="getmenuUp" parameterType="map" resultType="com.pms.common.UpperKeyMap">
WITH RECURSIVE v_menu(
LEVEL,
MENU_TYPE,
OBJID,
PARENT_OBJ_ID,
MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
REGDATE,
STATUS,
MENU_PATH,
PATH,
CYCLE
) AS (
SELECT
1 AS LEVEL,
MENU_TYPE,
OBJID::numeric,
PARENT_OBJ_ID,
MENU_NAME_KOR,
MENU_URL,
MENU_DESC,
SEQ,
WRITER,
REGDATE,
STATUS,
MENU.MENU_NAME_KOR::VARCHAR,
ARRAY [MENU.SEQ],
FALSE
FROM MENU_INFO MENU
WHERE 1=1
<!--
AND PARENT_OBJ_ID = 0
-->
AND MENU_TYPE=1
AND OBJID = #{menuObjId}::NUMERIC
UNION ALL
SELECT
V_MENU.LEVEL+1,
MENU_SUB.MENU_TYPE,
MENU_SUB.OBJID,
MENU_SUB.PARENT_OBJ_ID,
MENU_SUB.MENU_NAME_KOR,
MENU_SUB.MENU_URL,
MENU_SUB.MENU_DESC,
MENU_SUB.SEQ,
MENU_SUB.WRITER,
MENU_SUB.REGDATE,
MENU_SUB.STATUS,
MENU_SUB.MENU_NAME_KOR::VARCHAR || '_' || V_MENU.MENU_PATH,
PATH||MENU_SUB.SEQ::NUMERIC,
MENU_SUB.OBJID = ANY(PATH)
FROM MENU_INFO MENU_SUB
JOIN V_MENU
ON MENU_SUB.OBJID = V_MENU.PARENT_OBJ_ID
WHERE 1=1
AND UPPER(MENU_SUB.STATUS) = 'ACTIVE'
)
SELECT
V.LEVEL,
V.MENU_PATH,
A.*
FROM MENU_INFO A
,V_MENU V
WHERE 1=1
<!--
AND A.AND PARENT_OBJ_ID = #{MENUOBJID}::NUMERIC
-->
AND A.OBJID = V.OBJID
AND A.STATUS = 'active'
AND (
EXISTS (
SELECT 'E'
<!--
B.MENU_OBJID,
SUM(CASE B.CREATE_YN WHEN 'Y' THEN 1 ELSE 0 END) CREATE_AUTH_CNT,
SUM(CASE B.READ_YN WHEN 'Y' THEN 1 ELSE 0 END) READ_AUTH_CNT,
SUM(CASE B.UPDATE_YN WHEN 'Y' THEN 1 ELSE 0 END) UPDATE_AUTH_CNT,
SUM(CASE B.DELETE_YN WHEN 'Y' THEN 1 ELSE 0 END) DELETE_AUTH_CNT
-->
FROM
REL_MENU_AUTH B,
AUTHORITY_MASTER C
WHERE 1=1
AND A.OBJID = B.MENU_OBJID
AND B.AUTH_OBJID = C.OBJID
AND C.OBJID IN (
SELECT
MASTER_OBJID
FROM
AUTHORITY_SUB_USER
WHERE
USER_ID = #{userId}
)
)
OR EXISTS (SELECT 'E'
FROM AUTHORITY_MASTER AM
,AUTHORITY_SUB_USER ASU
WHERE AM.AUTH_CODE = '0000'
AND AM.OBJID = ASU.MASTER_OBJID
AND ASU.USER_ID = #{userId}
)
)
<!--
ORDER BY A.SEQ
-->
ORDER BY V.PATH
</select> <!-- 사용자 비밀번호 변경 --> <update id="updateUserPassword" parameterType="map"> UPDATE USER_INFO SET USER_PASSWORD = #{USER_PWD} WHERE USER_ID = #{USER_ID} </update></mapper>