- 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
326 lines
8.5 KiB
XML
326 lines
8.5 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="resourceMasterMng">
|
|
|
|
<sql id="resourceMasterMngBase">
|
|
(
|
|
SELECT
|
|
RM.OBJID,
|
|
RM.PART_OBJID,
|
|
PM.PART_NO,
|
|
(CASE WHEN PM.PART_NAME IS NULL THEN RM.PART_NAME ELSE PM.PART_NAME END) AS PART_NAME,
|
|
(CASE WHEN PM.SPEC IS NULL THEN RM.SPEC ELSE PM.SPEC END) AS SPEC,
|
|
(CASE WHEN PM.MATERIAL IS NULL THEN RM.MATERIAL ELSE PM.MATERIAL END) AS MATERIAL,
|
|
(CASE WHEN PM.UNIT IS NULL THEN RM.UNIT ELSE (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = PM.UNIT) END) AS UNIT,
|
|
(CASE WHEN PM.WEIGHT IS NULL THEN RM.WEIGHT ELSE PM.WEIGHT END) AS WEIGHT,
|
|
RM.THICKNESS ,
|
|
RM.WIDTH ,
|
|
RM.HEIGHT ,
|
|
RM.OUT_DIAMETER,
|
|
RM.IN_DIAMETER ,
|
|
RM.LENGTH ,
|
|
RP.UNIT_PRICE,
|
|
RP.PERSON_PRICE,
|
|
RP.AGENCY_PRICE,
|
|
RP.REMARK,
|
|
RP.PRICE_REGDATE_TITLE,
|
|
REGDATE,
|
|
TO_CHAR(RM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
|
TO_CHAR(RM.REGDATE,'YYYY') AS REGDATE_YEAR_TITLE,
|
|
RM.WRITER,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = RM.WRITER) AS WRITER_TITLE,
|
|
(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE 1 = 1 AND F.TARGET_OBJID = RM.OBJID AND F.DOC_TYPE = 'RESOURCE_MASTER_MNG_FILE' AND UPPER(F.STATUS) = 'ACTIVE') AS FILE_CNT,
|
|
|
|
CASE WHEN CAD.SAVED_FILE_NAME IS NOT NULL
|
|
THEN 1
|
|
ELSE 0 END AS CU01_CNT,
|
|
|
|
CASE WHEN DRAWING.SAVED_FILE_NAME IS NOT NULL
|
|
THEN 1
|
|
ELSE 0 END AS CU02_CNT,
|
|
|
|
CASE WHEN PDF.SAVED_FILE_NAME IS NOT NULL
|
|
THEN 1
|
|
ELSE 0 END AS CU03_CNT,
|
|
AF.SAVED_FILE_NAME,
|
|
AF.REAL_FILE_NAME,
|
|
REPLACE(AF.FILE_PATH, '\', '\\') AS FILE_PATH
|
|
|
|
FROM
|
|
RESOURCE_MNG RM
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
PARENT_OBJID,
|
|
UNIT_PRICE,
|
|
PERSON_PRICE,
|
|
AGENCY_PRICE,
|
|
REMARK,
|
|
TO_CHAR(RP.APPLY_DATE,'YYYY-MM-DD') AS PRICE_REGDATE_TITLE,
|
|
ROW_NUMBER() OVER(PARTITION BY PARENT_OBJID ORDER BY REGDATE DESC) AS RNUM
|
|
FROM
|
|
RESOURCE_PRICE RP
|
|
) RP
|
|
ON RM.OBJID = RP.PARENT_OBJID
|
|
AND RP.RNUM = 1
|
|
LEFT OUTER JOIN PART_MNG AS PM
|
|
ON RM.PART_OBJID = PM.OBJID::VARCHAR
|
|
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
TARGET_OBJID,
|
|
SAVED_FILE_NAME,
|
|
REAL_FILE_NAME,
|
|
FILE_PATH,
|
|
DOC_TYPE
|
|
FROM ATTACH_FILE_INFO
|
|
WHERE 1 = 1
|
|
AND DOC_TYPE IN ('3D_CAD')
|
|
AND STATUS = 'Active'
|
|
) CAD
|
|
ON PM.OBJID::varchar = CAD.TARGET_OBJID::varchar
|
|
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
TARGET_OBJID,
|
|
SAVED_FILE_NAME,
|
|
REAL_FILE_NAME,
|
|
FILE_PATH,
|
|
DOC_TYPE
|
|
FROM ATTACH_FILE_INFO
|
|
WHERE 1 = 1
|
|
AND DOC_TYPE IN ('2D_DRAWING_CAD')
|
|
AND STATUS = 'Active'
|
|
) DRAWING
|
|
ON PM.OBJID::varchar = DRAWING.TARGET_OBJID::varchar
|
|
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
TARGET_OBJID,
|
|
SAVED_FILE_NAME,
|
|
REAL_FILE_NAME,
|
|
FILE_PATH,
|
|
DOC_TYPE
|
|
FROM ATTACH_FILE_INFO
|
|
WHERE 1 = 1
|
|
AND DOC_TYPE IN ('2D_PDF_CAD')
|
|
AND STATUS = 'Active'
|
|
) PDF
|
|
ON PM.OBJID::varchar = PDF.TARGET_OBJID::varchar
|
|
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
TARGET_OBJID,
|
|
SAVED_FILE_NAME,
|
|
REAL_FILE_NAME,
|
|
FILE_PATH,
|
|
DOC_TYPE
|
|
FROM ATTACH_FILE_INFO
|
|
WHERE 1 = 1
|
|
AND DOC_TYPE IN ('PART_SHAPE_IMG')
|
|
AND STATUS = 'Active'
|
|
) AF
|
|
ON PM.OBJID::varchar = AF.TARGET_OBJID::varchar
|
|
)
|
|
</sql>
|
|
|
|
<sql id="resourcePriceBase">
|
|
(
|
|
SELECT
|
|
OBJID,
|
|
PARENT_OBJID,
|
|
UNIT_PRICE,
|
|
PERSON_PRICE,
|
|
AGENCY_PRICE,
|
|
REMARK,
|
|
REGDATE,
|
|
TO_CHAR(RP.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
|
TO_CHAR(RP.REGDATE,'YYYY') AS REGDATE_YEAR_TITLE,
|
|
TO_CHAR(RP.APPLY_DATE,'YYYY-MM-DD') AS APPLY_DATE_TITLE,
|
|
WRITER,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = RP.WRITER) AS WRITER_TITLE
|
|
FROM
|
|
RESOURCE_PRICE RP
|
|
)
|
|
</sql>
|
|
|
|
<!-- 자재관리 목록 -->
|
|
<select id="getResourceMasterMngList" parameterType="map" resultType="map">
|
|
SELECT *
|
|
FROM(
|
|
SELECT T.*, ROW_NUMBER() OVER(ORDER BY REGDATE DESC) RNUM
|
|
FROM(
|
|
SELECT
|
|
T.*
|
|
FROM <include refid="resourceMasterMngBase"/> T
|
|
WHERE 1=1
|
|
<if test="search_year != null and search_year != ''">
|
|
AND T.REGDATE_YEAR_TITLE = #{search_year}
|
|
</if>
|
|
<if test="part_no != null and part_no != ''">
|
|
AND UPPER(T.PART_NO) LIKE UPPER('%${part_no}%')
|
|
</if>
|
|
<if test="part_name != null and part_name != ''">
|
|
AND UPPER(T.PART_NAME) LIKE UPPER('%${part_name}%')
|
|
</if>
|
|
<if test="search_resource_title != null and search_resource_title != ''">
|
|
AND T.RESOURCE_TITLE_ORG = #{search_resource_title}
|
|
</if>
|
|
<if test="search_product_title != null and search_product_title != ''">
|
|
AND T.PRODUCT_TITLE_ORG = #{search_product_title}
|
|
</if>
|
|
<if test="search_standard != null and search_standard != ''">
|
|
AND UPPER(T.STANDARD) LIKE UPPER('%${search_standard}%')
|
|
</if>
|
|
) T
|
|
) A WHERE 1=1
|
|
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
|
|
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
|
|
</select>
|
|
|
|
<select id="getResourceMasterMngListCnt" 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
|
|
T.*
|
|
FROM <include refid="resourceMasterMngBase"/> T
|
|
WHERE 1=1
|
|
<if test="search_year != null and search_year != ''">
|
|
AND T.REGDATE_YEAR_TITLE = #{search_year}
|
|
</if>
|
|
<if test="search_resource_title != null and search_resource_title != ''">
|
|
AND T.RESOURCE_TITLE_ORG = #{search_resource_title}
|
|
</if>
|
|
<if test="search_product_title != null and search_product_title != ''">
|
|
AND T.PRODUCT_TITLE_ORG = #{search_product_title}
|
|
</if>
|
|
<if test="search_standard != null and search_standard != ''">
|
|
AND UPPER(T.STANDARD) LIKE UPPER('%${search_standard}%')
|
|
</if>
|
|
) T
|
|
)A WHERE 1=1
|
|
</select>
|
|
|
|
<select id="getResourceMasterMngInfo" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*
|
|
FROM <include refid="resourceMasterMngBase"/> T
|
|
WHERE 1=1
|
|
AND T.OBJID = #{OBJID}::numeric
|
|
</select>
|
|
|
|
<select id="getResourcePriceList" parameterType="map" resultType="map">
|
|
SELECT
|
|
T.*,
|
|
ROW_NUMBER() OVER(ORDER BY T.REGDATE) AS RNUM
|
|
FROM <include refid="resourcePriceBase"/> T
|
|
WHERE 1=1
|
|
AND T.PARENT_OBJID = #{OBJID}::numeric
|
|
ORDER BY T.REGDATE DESC
|
|
</select>
|
|
|
|
<!-- 중고관리 merge -->
|
|
<update id="mergeResourceMasterMng" parameterType="map">
|
|
INSERT INTO RESOURCE_MNG
|
|
(
|
|
OBJID,
|
|
PART_OBJID,
|
|
PART_NAME,
|
|
SPEC,
|
|
MATERIAL,
|
|
UNIT,
|
|
WEIGHT,
|
|
REGDATE,
|
|
WRITER
|
|
,THICKNESS
|
|
,WIDTH
|
|
,HEIGHT
|
|
,OUT_DIAMETER
|
|
,IN_DIAMETER
|
|
,LENGTH
|
|
)
|
|
VALUES
|
|
(
|
|
#{OBJID}::numeric,
|
|
(CASE WHEN #{part_objid} = '' THEN '0' ELSE #{part_objid} END),
|
|
#{part_name},
|
|
#{spec},
|
|
#{material},
|
|
#{unit},
|
|
#{weight},
|
|
NOW(),
|
|
#{WRITER}
|
|
,#{THICKNESS }
|
|
,#{WIDTH }
|
|
,#{HEIGHT }
|
|
,#{OUT_DIAMETER }
|
|
,#{IN_DIAMETER }
|
|
,#{LENGTH }
|
|
) ON CONFLICT (OBJID) DO
|
|
|
|
UPDATE
|
|
SET
|
|
PART_NAME = #{part_name},
|
|
SPEC = #{spec},
|
|
MATERIAL = #{material},
|
|
UNIT = #{unit},
|
|
WEIGHT = #{weight},
|
|
WRITER = #{WRITER}
|
|
,THICKNESS = #{THICKNESS }
|
|
,WIDTH = #{WIDTH }
|
|
,HEIGHT = #{HEIGHT }
|
|
,OUT_DIAMETER = #{OUT_DIAMETER }
|
|
,IN_DIAMETER = #{IN_DIAMETER }
|
|
,LENGTH = #{LENGTH }
|
|
</update>
|
|
|
|
<update id="mergeResourcePrice" parameterType="map">
|
|
INSERT INTO RESOURCE_PRICE
|
|
(
|
|
OBJID
|
|
,PARENT_OBJID
|
|
,UNIT_PRICE
|
|
,PERSON_PRICE
|
|
,AGENCY_PRICE
|
|
,REMARK
|
|
,APPLY_DATE
|
|
,REGDATE
|
|
,WRITER
|
|
)
|
|
VALUES
|
|
(
|
|
#{OBJID}::numeric
|
|
,#{PARENT_OBJID}::numeric
|
|
,#{UNIT_PRICE}
|
|
,#{PERSON_PRICE}
|
|
,#{AGENCY_PRICE}
|
|
,#{REMARK}
|
|
<choose>
|
|
<when test="APPLY_DATE != null and APPLY_DATE != ''">,#{APPLY_DATE}::TIMESTAMP</when>
|
|
<otherwise>,NOW()</otherwise>
|
|
</choose>
|
|
,NOW()
|
|
,#{WRITER}
|
|
)
|
|
</update>
|
|
|
|
<delete id="deleteResourceMasterMng" parameterType="map">
|
|
DELETE FROM RESOURCE_MNG WHERE OBJID = #{OBJID}::numeric
|
|
</delete>
|
|
|
|
<delete id="deleteResourcePrice" parameterType="map">
|
|
DELETE FROM RESOURCE_PRICE WHERE PARENT_OBJID = #{OBJID}::numeric
|
|
</delete>
|
|
|
|
</mapper> |