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

223 lines
6.8 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="distribution">
<!-- 비정규배포 관리 목록 -->
<select id="getDistributionMngList" parameterType="map" resultType="map">
<if test="'excel' != actionType">
SELECT *
FROM
(
</if>
SELECT *
FROM
(
SELECT ROWNUM RNUM
, OBJID
, RECEIVE_TYPE
, SUB_RECEIVE_TYPE
, CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = ID.CAR_OBJID) CAR_NAME
, TO_CHAR(RECEIVE_DATE,'YYYY-MM-DD') RECEIVE_DATE
, SUBJECT
, CONTENTS
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = ID.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = ID.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, TO_CHAR(RELEASE_DATE,'YYYY-MM-DD') RELEASE_DATE_TITLE
, STATUS
, WRITER
, DECODE(STATUS,'create','작성중','release','배포완료') AS STATUS_TITLE
FROM IRREGULAR_DISTRIBUTE ID
)
WHERE 1=1
<if test="search_subject != null and search_subject != ''">
AND SUBJECT LIKE '%'||#{search_subject}||'%'
</if>
<if test="search_receiveType != null and search_receiveType != ''">
AND RECEIVE_TYPE = #{search_receiveType}
</if>
<if test="search_subReceiveType != null and search_subReceiveType != ''">
AND SUB_RECEIVE_TYPE = #{search_subReceiveType}
</if>
<if test="search_carObjid != null and search_carObjid != ''">
AND CAR_OBJID = #{search_carObjid}
</if>
<if test="search_fromDate != null and search_fromDate != ''">
AND TO_DATE(RECEIVE_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'YYYY-MM-DD')
</if>
<if test="search_toDate != null and search_toDate != ''">
AND TO_DATE(RECEIVE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'YYYY-MM-DD')
</if>
<if test="search_status != null and search_status != ''">
AND STATUS = #{search_status}
</if>
<if test="'excel' != actionType">
)
WHERE <![CDATA[ RNUM <= #{PAGE_END} ]]>
AND <![CDATA[ RNUM >= #{PAGE_START}]]>
</if>
ORDER BY RNUM
</select>
<!-- 비정규 배포의 목록count를 가져온다. -->
<select id="getDistributionMngListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE}) MAX_PAGE_SIZE,
TOTAL_CNT
FROM (
SELECT
COUNT(1) TOTAL_CNT
FROM IRREGULAR_DISTRIBUTE
)
</select>
<!-- 비정규배포 등록/수정 -->
<update id="mergeDistribution" parameterType="map">
MERGE INTO IRREGULAR_DISTRIBUTE ID USING DUAL on (ID.OBJID = #{distributeObjid})
WHEN MATCHED THEN
UPDATE
SET
ID.RECEIVE_TYPE = #{receiveType},
ID.SUB_RECEIVE_TYPE = #{subReceiveType},
ID.CAR_OBJID = #{search_carObjid},
ID.RECEIVE_DATE = #{receiveDate},
ID.SUBJECT = #{subject},
ID.CONTENTS = #{contents}
WHEN NOT MATCHED THEN
INSERT
(
ID.OBJID,
ID.RECEIVE_TYPE,
ID.SUB_RECEIVE_TYPE,
ID.CAR_OBJID,
ID.RECEIVE_DATE,
ID.SUBJECT,
ID.CONTENTS,
ID.WRITER,
ID.REGDATE,
ID.STATUS
)
VALUES
(
#{distributeObjid},
#{receiveType},
#{subReceiveType},
#{search_carObjid},
#{receiveDate},
#{subject},
#{contents},
#{writer},
SYSDATE,
#{status}
)
</update>
<!-- 비정규 배포처 등록/수정 -->
<update id="mergeDistributionPoint" parameterType="map">
MERGE INTO IRREGULAR_DISTRIBUTE_POINT IDP USING DUAL on (IDP.OBJID = #{distributePointObjid})
WHEN MATCHED THEN
UPDATE
SET
IDP.RECEIPT_DATE = SYSDATE
WHEN NOT MATCHED THEN
INSERT
(
IDP.OBJID,
IDP.DISTRIBUTE_OBJID,
IDP.RECEIPT_USER_ID,
IDP.CAR_OBJID,
IDP.DISTRIBUTE_USER_ID,
IDP.DISTRIBUTE_DATE
)
VALUES
(
#{distributePointObjid},
#{distributeObjid},
#{userId},
#{search_carObjid},
#{writer},
SYSDATE
)
</update>
<!-- 비정규배포 단건 조회 -->
<select id="getDistributionInfo" parameterType="map" resultType="map">
SELECT ROWNUM RNUM
, OBJID
, RECEIVE_TYPE
, SUB_RECEIVE_TYPE
, CAR_OBJID
, (SELECT CAR_NAME FROM CAR_MNG WHERE OBJID = ID.CAR_OBJID) CAR_NAME
, (SELECT CAR_CODE FROM CAR_MNG WHERE OBJID = ID.CAR_OBJID) CAR_CODE
, TO_CHAR(RECEIVE_DATE,'YYYY-MM-DD') RECEIVE_DATE
, SUBJECT
, CONTENTS
, (SELECT DECODE(DEPT_NAME, NULL, '정보없음', DEPT_NAME) FROM USER_INFO WHERE USER_ID = ID.WRITER) DEPT_NAME
, (SELECT CASE WHEN USER_NAME IS NULL THEN '정보없음' ELSE USER_NAME END FROM USER_INFO WHERE USER_ID = ID.WRITER) USER_NAME
, TO_CHAR(REGDATE,'YYYY-MM-DD') REGDATE
, STATUS
, WRITER
, DECODE(STATUS,'create','작성중','release','배포완료') AS STATUS_TITLE
FROM IRREGULAR_DISTRIBUTE ID
WHERE OBJID = #{objId}
</select>
<!-- 배포처의 상태를 변경한다. -->
<update id="changeDistributeStatus" parameterType="map">
UPDATE IRREGULAR_DISTRIBUTE SET STATUS = #{status}, RELEASE_DATE = SYSDATE WHERE OBJID = #{objId}
</update>
<!-- 배포처에 해당하는 인원의 배포내용 확인여부를 merge 한다. -->
<update id="mergeDistributeConfirm" parameterType="map">
MERGE INTO IRREGULAR_DISTRIBUTE_POINT IDP USING DUAL ON (IDP.DISTRIBUTE_OBJID = #{objId} AND IDP.RECEIPT_USER_ID = #{userId})
WHEN NOT MATCHED THEN
INSERT
(
IDP.CAR_OBJID
,IDP.DISTRIBUTE_DATE
,IDP.DISTRIBUTE_OBJID
,IDP.DISTRIBUTE_USER_ID
,IDP.OBJID
,IDP.RECEIPT_DATE
,IDP.RECEIPT_USER_ID
)
VALUES
(
#{carObjId}
,TO_DATE(#{distributeDate})
,#{distributeObjid}
,#{distributeUserId}
,#{objId}
,SYSDATE
,#{userId}
)
</update>
<!-- 배포처에 해당하는 배포인원들의 확인여부 목록을 가져온다. -->
<select id="getDistributeMemberList" parameterType="map" resultType="map">
SELECT
IDP.OBJID
,ROWNUM RNUM
,IDP.CAR_OBJID
,IDP.DISTRIBUTE_DATE
,IDP.DISTRIBUTE_OBJID
,IDP.DISTRIBUTE_USER_ID
,IDP.RECEIPT_DATE
,TO_CHAR(IDP.RECEIPT_DATE,'YYYY-MM-DD') RECEIPT_DATE_TITLE
,IDP.RECEIPT_USER_ID
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IDP.RECEIPT_USER_ID)USER_NAME
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = IDP.RECEIPT_USER_ID)DEPT_NAME
FROM IRREGULAR_DISTRIBUTE_POINT IDP
WHERE DISTRIBUTE_OBJID = #{objId}
</select>
</mapper>