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

275 lines
9.0 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="releaseMgmt">
<sql id="releaseMgmtBase">
(
SELECT
CM.*
,RM.OBJID AS RELEASE_OBJID
,RM.PARENT_OBJID
,RM.RELEASE_CAR_NO
,RM.RELEASE_DATE
,RM.TASK_OVER_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = RM.TASK_OVER_USER_ID) AS TASK_OVER_USER_NAME
,RM.TASK_OVER_DATE
,RM.TASK_OVER_COMMENT
,RM.REGDATE AS RELEASE_REGDATE
,RM.WRITER AS RELEASE_WRITER
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = RM.OBJID AND DOC_TYPE='RELEASE_CHECK' AND UPPER(STATUS) = 'ACTIVE') AS RELEASE_CHECK_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = RM.OBJID AND DOC_TYPE='RELEASE_ORDER' AND UPPER(STATUS) = 'ACTIVE') AS RELEASE_ORDER_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = RM.OBJID AND DOC_TYPE='RELEASE_TAKING_OVER' AND UPPER(STATUS) = 'ACTIVE') AS RELEASE_TAKING_OVER_CNT
,CASE
WHEN (COALESCE(TRIM(RM.RELEASE_DATE),'') !='') THEN '출고완료'
WHEN TO_CHAR(NOW(),'YYYYMMDD') <![CDATA[ <= ]]> TO_CHAR(TO_DATE(CM.CONTRACT_COST_RESULT_DATE,'YYYY-MM-DD'),'YYYYMMDD') THEN '취소'
WHEN (COALESCE(TRIM(CM.CONTRACT_COST_RESULT_DATE),'') !='') THEN '수주'
WHEN TO_CHAR(NOW(),'YYYYMMDD') >= TO_CHAR(TO_DATE(CM.DUE_DATE,'YYYY-MM-DD'),'YYYYMMDD') THEN '지연'
ELSE '계약'
END RELEASE_STATUS_TITLE
,RM.INSTALL_COMPLETE_DATE
,RM.INSTALL_RESULT
FROM
<include refid="fundMgmt.fundMgmtBase"/> CM
LEFT OUTER JOIN
RELEASE_MGMT RM
ON CM.OBJID::VARCHAR = RM.PARENT_OBJID
<!-- AND CM.PRODUCT_GROUP = RM.PRODUCT_GROUP -->
AND CM.PRODUCT = RM.PRODUCT
)
</sql>
<sql id="releaseMgmtBase2">
(
SELECT
CM.*
,CM.CATEGORY_CD AS CM_CATEGORY_CD
,CM.CATEGORY_CD_NAME AS CM_CATEGORY_CD_NAME
,CM.PRODUCT AS CM_PRODUCT
,CM.PRODUCT_NAME AS CM_PRODUCT_NAME
,'1' AS PRODUCT_SEQ
,RM.OBJID AS RELEASE_OBJID
,RM.PARENT_OBJID
,RM.RELEASE_CAR_NO
,RM.RELEASE_DATE
,RM.TASK_OVER_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = RM.TASK_OVER_USER_ID) AS TASK_OVER_USER_NAME
,RM.TASK_OVER_DATE
,RM.TASK_OVER_COMMENT
,RM.REGDATE AS RELEASE_REGDATE
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = RM.WRITER) AS RELEASE_WRITER
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = RM.OBJID AND DOC_TYPE='RELEASE_CHECK' AND UPPER(STATUS) = 'ACTIVE') AS RELEASE_CHECK_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = RM.OBJID AND DOC_TYPE='RELEASE_ORDER' AND UPPER(STATUS) = 'ACTIVE') AS RELEASE_ORDER_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = RM.OBJID AND DOC_TYPE='RELEASE_TAKING_OVER' AND UPPER(STATUS) = 'ACTIVE') AS RELEASE_TAKING_OVER_CNT
,CASE
WHEN (COALESCE(TRIM(RM.RELEASE_DATE),'') !='') THEN '출고완료'
WHEN TO_CHAR(NOW(),'YYYYMMDD') <![CDATA[ <= ]]> TO_CHAR(TO_DATE(CM.CONTRACT_COST_RESULT_DATE,'YYYY-MM-DD'),'YYYYMMDD') THEN '취소'
WHEN (COALESCE(TRIM(CM.CONTRACT_COST_RESULT_DATE),'') !='') THEN '수주'
WHEN (COALESCE(TRIM(CM.CONTRACT_COST_RESULT_DATE),'') ='') THEN '지연'
ELSE '계약'
END RELEASE_STATUS_TITLE
,RM.INSTALL_COMPLETE_DATE
,RM.INSTALL_RESULT
FROM
<include refid="fundMgmt.fundMgmtBase2"/> CM
LEFT OUTER JOIN
RELEASE_MGMT RM
ON CM.OBJID::VARCHAR = RM.PARENT_OBJID
<!-- AND CM.PRODUCT_GROUP = RM.PRODUCT_GROUP -->
AND CM.PRODUCT = RM.PRODUCT
WHERE 1=1
<!-- AND CM.PRODUCT_GROUP IS NOT NULL -->
AND CM.PRODUCT IS NOT NULL
)
</sql>
<!-- //자금관리 리스트 -->
<select id="getReleaseMgmtList" parameterType="map" resultType="map">
SELECT
T.*
,ROW_NUMBER() OVER (PARTITION BY CONTRACT_NO ORDER BY CONTRACT_NO DESC) AS RSEQ
FROM
<include refid="releaseMgmtBase"/> T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
<if test="project_no !=null and project_no != '' ">
AND OBJID = #{project_no}
</if>
<if test="category_cd !=null and category_cd != '' ">
AND category_cd = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND customer_objid = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND product = #{product}
</if>
<if test="status_cd !=null and status_cd !=''">
AND status_cd = #{status_cd}
</if>
<if test="release_start_date != null and !''.equals(release_start_date)">
AND TO_DATE(RELEASE_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{release_start_date}, 'YYYY-MM-DD')
</if>
<if test="release_end_date != null and !''.equals(release_end_date)">
AND TO_DATE(RELEASE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{release_end_date}, 'YYYY-MM-DD')
</if>
<if test="release_status !=null and release_status !=''">
AND RELEASE_STATUS_TITLE = #{release_status}
</if>
<if test="install_result !=null and install_result !=''">
AND INSTALL_RESULT = #{install_result}
</if>
<if test="contract_mgmt_objid !=null and contract_mgmt_objid !=''">
AND CONTRACT_OBJID = #{contract_mgmt_objid}
</if>
</select>
<!-- //자금관리 리스트 -->
<select id="getReleaseMgmtGridList" parameterType="map" resultType="map">
SELECT
T.*
,ROW_NUMBER() OVER (PARTITION BY CONTRACT_NO ORDER BY CONTRACT_NO DESC) AS RSEQ
FROM
<include refid="releaseMgmtBase"/> T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
<!-- <if test="project_no !=null and project_no != '' ">
AND OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="category_cd !=null and category_cd != '' ">
AND category_cd = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND customer_objid = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND product = #{product}
</if>
<if test="status_cd !=null and status_cd !=''">
AND status_cd = #{status_cd}
</if>
<if test="release_start_date != null and !''.equals(release_start_date)">
AND TO_DATE(RELEASE_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{release_start_date}, 'YYYY-MM-DD')
</if>
<if test="release_end_date != null and !''.equals(release_end_date)">
AND TO_DATE(RELEASE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{release_end_date}, 'YYYY-MM-DD')
</if>
<if test="release_status !=null and release_status !=''">
AND RELEASE_STATUS_TITLE = #{release_status}
</if>
<if test="install_result !=null and install_result !=''">
AND INSTALL_RESULT = #{install_result}
</if>
<if test="contract_mgmt_objid !=null and contract_mgmt_objid !=''">
AND CONTRACT_OBJID = #{contract_mgmt_objid}
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
</select>
<select id="getReleaseMgmtInfo" parameterType="map" resultType="map">
SELECT
RMB.*
FROM
<include refid="releaseMgmtBase2"/> RMB
WHERE 1=1
AND RMB.OBJID::VARCHAR = #{PARENT_OBJID}
<!-- AND RMB.CM_PRODUCT_GROUP = #{PRODUCT_GROUP} -->
AND RMB.CM_PRODUCT = #{PRODUCT}
</select>
<update id="saveReleaseMgmtInfo" parameterType="map">
INSERT INTO
RELEASE_MGMT
(
OBJID
,PARENT_OBJID
,RELEASE_CAR_NO
,RELEASE_DATE
,TASK_OVER_USER_ID
,TASK_OVER_DATE
,TASK_OVER_COMMENT
,STATUS
,REGDATE
,WRITER
,PRODUCT_GROUP
,PRODUCT
,INSTALL_COMPLETE_DATE
,INSTALL_RESULT
)VALUES(
#{RELEASE_OBJID}
,#{PARENT_OBJID}
,#{RELEASE_CAR_NO}
,#{RELEASE_DATE}
,#{TASK_OVER_USER_ID}
,#{TASK_OVER_DATE}
,#{TASK_OVER_COMMENT}
,#{STATUS}
,NOW()
,#{WRITER}
,#{PRODUCT_GROUP}
,#{PRODUCT}
,#{INSTALL_COMPLETE_DATE}
,#{INSTALL_RESULT}
)ON CONFLICT (OBJID) DO
UPDATE
SET
PARENT_OBJID = #{PARENT_OBJID}
,RELEASE_CAR_NO = #{RELEASE_CAR_NO}
,RELEASE_DATE = #{RELEASE_DATE}
,WRITER = #{WRITER}
,TASK_OVER_USER_ID = #{TASK_OVER_USER_ID}
,TASK_OVER_DATE = #{TASK_OVER_DATE}
,TASK_OVER_COMMENT = #{TASK_OVER_COMMENT}
,STATUS = #{STATUS}
,PRODUCT_GROUP = #{PRODUCT_GROUP}
,PRODUCT = #{PRODUCT}
,INSTALL_COMPLETE_DATE= #{INSTALL_COMPLETE_DATE}
,INSTALL_RESULT = #{INSTALL_RESULT}
</update>
<delete id="deleteReleaseMgmtInfo" parameterType="map">
DELETE FROM RELEASE_MGMT WHERE 1=1
<if test="checkArr != null and checkArr !=''">
<![CDATA[ AND 0 < POSITION(OBJID::TEXT || ',' IN #{checkArr}||',') ]]>
</if>
</delete>
</mapper>