Files
wace_plm/WebContent/WEB-INF/classes/com/pms/mapper/ecr.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

194 lines
5.6 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="ecr">
<update id="mergeECR" parameterType="map">
INSERT INTO ECR_MNG
(
OBJID
,ECR_NO
,PRODUCT_OBJID
,PART_OBJID
,REQUEST_CD
,TITLE
,WRITER
,STATUS_CD
,BEFORE_CONTENTS
,AFTER_CONTENTS
,REG_DATE
)
VALUES
(
#{objId}::integer
,(SELECT 'ECR-'||TO_CHAR(NOW(),'yyyy')::VARCHAR ||'-'||LPAD((SELECT nextval('seq_ecr_no'))::VARCHAR ,3,'0'))
,#{product_objid}::integer
,#{part_objid}::integer
,#{request_codeArr}::varchar
,#{title}
,#{writer}
,'0000100'
,#{before_contents}
,#{after_contents}
,now()
) ON CONFLICT (OBJID) DO
UPDATE
SET
TITLE = #{title}
,PRODUCT_OBJID = #{product_objid}::integer
,PART_OBJID = #{part_objid}::integer
,REQUEST_CD = #{request_codeArr}::varchar
,BEFORE_CONTENTS = #{before_contents}
</update>
<update id="completeECR" parameterType="map">
UPDATE ECR_MNG
SET STATUS_CD = '0000102'
,AFTER_CONTENTS = #{after_contents}
,CHECK_USER_ID = #{writer}
,CHECK_DATE = now()
WHERE OBJID = #{objId}::integer
</update>
<!-- 페이징 처리한 EO 목록을 가져온다. -->
<select id="getECRListPaging" parameterType="map" resultType="map">
SELECT
*
FROM
(SELECT
ROW_NUMBER() OVER (ORDER BY ECR_NO) AS RNUM,
T.OBJID::varchar,
T.ECR_NO,
(SELECT PRODUCT_CODE FROM PRODUCT_MGMT WHERE OBJID = PRODUCT_OBJID) AS PRODUCT_NAME,
T.PRODUCT_OBJID,
T.UPG_NO,
T.PART_OBJID,
(SELECT PART_NO FROM PART_MNG WHERE OBJID = PART_OBJID) AS PART_NO,
(SELECT PART_NAME FROM PART_MNG WHERE OBJID = PART_OBJID) AS PART_NAME,
REQUEST_CD,
T1.REQUEST_NAME,
T.TITLE,
T.WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) AS WRITER_NAME,
T.STATUS_CD,
code_name(T.STATUS_CD) AS STATUS_NAME,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.CHECK_USER_ID) AS CHECK_NAME,
TO_CHAR(T.REG_DATE,'YYYY-MM-DD') AS REG_DATE,
TO_CHAR(T.CHECK_DATE,'YYYY-MM-DD') AS CHECK_DATE
FROM ecr_mng T
LEFT OUTER JOIN
(SELECT
ARRAY_TO_STRING(ARRAY_AGG((select code_name FROM comm_code AS cc WHERE cc.code_id IN(TT.REQUEST))),',') AS REQUEST_NAME,
TT.OBJID
FROM (SELECT
T.OBJID,
unnest(string_to_array(REQUEST_CD, ',')) AS REQUEST
FROM ecr_mng AS T) AS TT
GROUP BY TT.OBJID) AS T1
ON T.OBJID= T1.OBJID
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(T.REG_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
<if test="request_code != null and request_code != ''">
AND UPPER(REQUEST_CD) LIKE UPPER('%${request_code}%')
</if>
<if test="writer != null and writer != ''">
AND T.writer = #{writer}
</if>
<if test="status_code != null and status_code != ''">
AND T.status_cd = #{status_code}
</if>
) 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>
<!-- 페이징 처리한 ECR 목록을 가져온다. -->
<select id="getECRListCnt" parameterType="map" resultType="map">
SELECT CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer as MAX_PAGE_SIZE,
TOTAL_CNT::integer
FROM(
SELECT
COUNT(1)::float TOTAL_CNT
FROM(
SELECT objid,
ecr_no,
product_objid,
upg_no,
part_objid,
request_cd,
title,
writer,
status_cd,
TO_CHAR(reg_date,'YYYY-MM-DD') AS REG_DATE
FROM ECR_MNG T
WHERE 1=1
) AS ECR WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(ECR.REG_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
<if test="product_code != null and product_code != ''">
AND ECR.product_objid = #{product_code}::integer
</if>
<if test="request_code != null and request_code != ''">
AND UPPER(REQUEST_CD) LIKE UPPER('%${request_code}%')
</if>
<if test="writer != null and writer != ''">
AND ECR.writer = #{writer}
</if>
<if test="status_code != null and status_code != ''">
AND ECR.status_cd = #{status_code}
</if>
) AS T
</select>
<!-- ECR 단건 정보를 가져온다. -->
<select id="getECRInfo" parameterType="map" resultType="map">
SELECT T.OBJID::varchar,
T.ECR_NO,
(SELECT PRODUCT_CODE FROM PRODUCT_MGMT WHERE OBJID = PRODUCT_OBJID) AS PRODUCT_NAME,
T.PRODUCT_OBJID::varchar,
T.UPG_NO,
T.PART_OBJID::varchar,
(SELECT PART_NO FROM PART_MNG WHERE OBJID = PART_OBJID) AS PART_NO,
(SELECT PART_NAME FROM PART_MNG WHERE OBJID = PART_OBJID) AS PART_NAME,
REQUEST_CD,
T.TITLE,
T.WRITER,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.WRITER) AS WRITER_NAME,
T.STATUS_CD,
TO_CHAR(T.REG_DATE,'YYYY-MM-DD') AS REG_DATE,
BEFORE_CONTENTS,
AFTER_CONTENTS,
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.CHECK_USER_ID) AS CHECK_NAME,
TO_CHAR(T.CHECK_DATE,'YYYY-MM-DD') AS CHECK_DATE
FROM ECR_MNG T
WHERE 1=1
AND OBJID = #{objId}::integer
</select>
<update id="ecrDelete" parameterType="map">
DELETE FROM ECR_MNG
WHERE OBJID=#{objId}::numeric
</update>
</mapper>