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

217 lines
6.4 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="optionMng">
<select id="getOptionMngListCnt" 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 FROM OPTION_MNG
WHERE 1=1
<if test="search_optionName != null and !''.equals(search_optionName)">
AND UPPER(OPTION_NAME) LIKE UPPER('%${search_optionName}%')
</if>
) T
) TT
WHERE 1=1
</select>
<select id="getOptionMngList" parameterType="map" resultType="map">
SELECT * FROM (
SELECT T.*,ROW_NUMBER() OVER (ORDER BY OPTION_NO ASC) AS RNUM
FROM (
SELECT OBJID --OBJID
,OPTION_NO --옵션번호(자동)
,OPTION_NAME --옵션이름
,OPTION_NAME_ENG --옵션이름 영문
,STD_CODE --표준코드
,OPTION_TYPE --옵셥타입
,TO_DATE(T.REG_DATE, 'YYYY-MM-DD') AS REG_DATE --등록일
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) AS WRITER --등록자
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = T.OBJID::NUMERIC AND DOC_TYPE='optionMng01' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT
,STATUS --상태
,CATEGORY
,CASE WHEN CATEGORY='mid'
THEN (SELECT OPTION_NAME FROM option_mng AS O WHERE O.OBJID = T.PARENT_OBJID)
WHEN CATEGORY='low'
THEN (SELECT OPTION_NAME FROM option_mng AS O WHERE O.OBJID = (SELECT PARENT_OBJID FROM option_mng AS O WHERE O.OBJID = T.PARENT_OBJID))
WHEN CATEGORY='high'
THEN OPTION_NAME
ELSE '' END AS HIGH_NAME
,CASE WHEN CATEGORY='low'
THEN (SELECT OPTION_NAME FROM option_mng AS O WHERE O.OBJID = T.PARENT_OBJID)
WHEN CATEGORY='mid'
THEN OPTION_NAME
ELSE '' END AS MID_NAME
,CASE WHEN CATEGORY='low'
THEN OPTION_NAME
ELSE '' END AS LOW_NAME
,PRICE
FROM OPTION_MNG AS T
WHERE 1=1
<if test="search_optionName != null and !''.equals(search_optionName)">
AND UPPER(OPTION_NAME) LIKE UPPER('%${search_optionName}%')
</if>
) T
) TT
WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND TT.RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND TT.RNUM >= #{PAGE_START} ]]>
</if>
</select>
<select id="getOptionMngInfo" parameterType="map" resultType="map">
SELECT OBJID::NUMERIC --OBJID
,OPTION_NO --옵션번호(자동)
,OPTION_NAME --옵션이름
,OPTION_NAME_ENG --옵션이름 영문
,STD_CODE --표준코드
,OPTION_TYPE --옵셥타입
,TO_DATE(T.REG_DATE, 'YYYY-MM-DD') AS REG_DATE --등록일
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) AS WRITER --등록자
,STATUS --상태
,PARENT_OBJID
,CATEGORY
,CASE WHEN CATEGORY='mid'
THEN (SELECT OBJID::VARCHAR FROM option_mng AS O WHERE O.OBJID::VARCHAR = T.PARENT_OBJID)
WHEN CATEGORY='low'
THEN (SELECT PARENT_OBJID FROM option_mng AS O WHERE O.OBJID::VARCHAR = T.PARENT_OBJID)
ELSE '' END AS HIGH_CD
,CASE WHEN CATEGORY='low'
THEN (SELECT OBJID::VARCHAR FROM option_mng AS O WHERE O.OBJID::VARCHAR = T.PARENT_OBJID)
ELSE '' END AS MID_CD
,PRICE
FROM OPTION_MNG AS T
WHERE T.OBJID = #{objId}::varchar
</select>
<update id="saveOptionMngInfo" parameterType="map">
INSERT INTO OPTION_MNG
(
OBJID
,OPTION_NO
,OPTION_NAME
,OPTION_NAME_ENG
,STD_CODE
,OPTION_TYPE
,REG_DATE
,WRITER
,STATUS
,CATEGORY
,PARENT_OBJID
<if test="price != null and !''.equals(price)">
,PRICE
</if>
)
VALUES
(
#{objId }
, (SELECT 'OPT-'||LPAD((SELECT (COUNT(1)+1) FROM OPTION_MNG AS T)::VARCHAR ,4,'0'))
, #{option_name }
, #{option_name_eng }
, #{std_code }
, #{option_type }
, NOW()
, #{userId }
, #{status }
, #{category}
, #{parent_objid}
<if test="price != null and !''.equals(price)">
, #{price}
</if>
)
ON CONFLICT (OBJID) DO
UPDATE
SET
OPTION_NO = #{option_no }
,OPTION_NAME = #{option_name }
,OPTION_NAME_ENG = #{option_name_eng }
,STD_CODE = #{std_code }
,OPTION_TYPE = #{option_type }
,REG_DATE = NOW()
,WRITER = #{userId }
,STATUS = #{status }
,CATEGORY = #{category}
,PARENT_OBJID= #{parent_objid}
<if test="price != null and !''.equals(price)">
,PRICE = #{price}
</if>
</update>
<update id="deleteOptionMngInfo" parameterType="map">
DELETE FROM OPTION_MNG WHERE OBJID = #{objId}
</update>
<insert id="insertOptionPriceHistory" parameterType="map">
INSERT INTO OPTION_PRICE_HISTORY
(
OBJID
,OPTION_OBJID
,REG_DATE
,PRICE
) VALUES (
#{priceobjid}
,#{objId}
,now()
,#{price}
)
</insert>
<select id="getOptionPriceHistoryCnt" 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 FROM OPTION_PRICE_HISTORY
WHERE OPTION_OBJID = #{objId}
) T
) TT
WHERE 1=1
</select>
<select id="getOptionPriceHistory" parameterType="map" resultType="map">
SELECT * FROM (
SELECT T.*,ROW_NUMBER() OVER (ORDER BY REG_DATE DESC) AS RNUM
FROM (
SELECT OBJID
,TO_DATE(T.REG_DATE, 'YYYY-MM-DD') AS REGDATE
,REG_DATE
,PRICE
FROM OPTION_PRICE_HISTORY AS T
WHERE OPTION_OBJID = #{objId}
) T
) TT
WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND TT.RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND TT.RNUM >= #{PAGE_START} ]]>
</if>
</select>
<update id="deleteOptionHistoryPriceInfo" parameterType="map">
DELETE FROM OPTION_PRICE_HISTORY WHERE OBJID = #{objId}
</update>
</mapper>