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

2259 lines
70 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="inventoryMng">
<sql id="inventoryMngBase">
(
SELECT
OBJID,
RESOURCE_TITLE AS RESOURCE_TITLE_ORG,
PRODUCT_TITLE AS PRODUCT_TITLE_ORG,
STANDARD,
UNIT_TITLE,
UNIT,
WEIGHT,
REGDATE,
TO_CHAR(RM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
TO_CHAR(RM.REGDATE,'YYYY') AS REGDATE_YEAR_TITLE,
WRITER,
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = RM.WRITER) AS WRITER_TITLE,
IM.QTY,
IM.REGDATE_TITLE,
IM.REMARK,
IM.LOCATION,
IM.REMARK,
IM.INVENTORY_OBJID
FROM
RESOURCE_MNG RM
LEFT OUTER JOIN
(
SELECT
OBJID AS INVENTORY_OBJID,
PARENT_OBJID,
QTY,
LOCATION,
REMARK,
TO_CHAR(REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE
FROM
INVENTORY_MNG
WHERE IS_LAST = 'Y'
) IM
ON RM.OBJID = IM.PARENT_OBJID
)
</sql>
<sql id="resourcePriceBase">
(
SELECT
OBJID,
PARENT_OBJID,
UNIT_PRICE,
REMARK,
REGDATE,
TO_CHAR(RP.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
TO_CHAR(RP.REGDATE,'YYYY') AS REGDATE_YEAR_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="getInventoryMngList_old" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT
T.*,
ROW_NUMBER() OVER(ORDER BY REGDATE DESC) RNUM
FROM(
SELECT
T.*
FROM (
SELECT
OBJID,
PART_OBJID,
(SELECT PART_NO FROM PART_MNG WHERE OBJID::VARCHAR = PART_OBJID) AS PART_NO,
PART_NAME,
SPEC,
MATERIAL,
UNIT,
WEIGHT,
RM.THICKNESS ,
RM.WIDTH ,
RM.HEIGHT ,
RM.OUT_DIAMETER,
RM.IN_DIAMETER ,
RM.LENGTH ,
REGDATE,
TO_CHAR(RM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
TO_CHAR(RM.REGDATE,'YYYY') AS REGDATE_YEAR_TITLE,
WRITER,
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = RM.WRITER) AS WRITER_TITLE
<foreach collection="inventoryLocationList" item="obj">
,(SELECT I.QTY FROM INVENTORY_MNG I WHERE I.IS_LAST = 'Y' AND RM.OBJID = I.PARENT_OBJID AND I.LOCATION = #{obj.CODE_ID}) AS COL_${obj.CODE_ID}
</foreach>
,(
SELECT
SUM(I.QTY)
FROM
INVENTORY_MNG I
WHERE I.IS_LAST = 'Y'
AND RM.OBJID = I.PARENT_OBJID
AND I.LOCATION IN
<foreach collection="inventoryLocationList" item="obj" index="index" separator="," open="(" close=")">
#{obj.CODE_ID}
</foreach>
) AS QTY_SUM,
(
SELECT
I.REMARK
FROM(
SELECT
ROW_NUMBER() OVER(ORDER BY REGDATE DESC) RNUM,
REMARK
FROM
INVENTORY_MNG I
WHERE I.IS_LAST = 'Y'
AND RM.OBJID = I.PARENT_OBJID
) I WHERE 1=1
AND I.RNUM = 1
) AS REMARK,
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
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 RM.PART_OBJID = 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 RM.PART_OBJID = 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 RM.PART_OBJID = 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 RM.PART_OBJID = AF.TARGET_OBJID::varchar
) 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>
) T
) A WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</select>
<select id="getInventoryMngListCnt_old" 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 (
SELECT
OBJID,
PART_OBJID,
PART_NAME,
SPEC,
MATERIAL,
UNIT,
WEIGHT,
REGDATE,
TO_CHAR(RM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
TO_CHAR(RM.REGDATE,'YYYY') AS REGDATE_YEAR_TITLE,
WRITER,
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = RM.WRITER) AS WRITER_TITLE
<foreach collection="inventoryLocationList" item="obj">
,(SELECT I.QTY FROM INVENTORY_MNG I WHERE I.IS_LAST = 'Y' AND RM.OBJID = I.PARENT_OBJID AND I.LOCATION = #{obj.CODE_ID}) AS COL_${obj.CODE_ID}
</foreach>
,(
SELECT
SUM(I.QTY)
FROM
INVENTORY_MNG I
WHERE I.IS_LAST = 'Y'
AND RM.OBJID = I.PARENT_OBJID
AND I.LOCATION IN
<foreach collection="inventoryLocationList" item="obj" index="index" separator="," open="(" close=")">
#{obj.CODE_ID}
</foreach>
) AS QTY_SUM
FROM
RESOURCE_MNG RM
) T
) 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>
)A WHERE 1=1
</select>
<!-- 등록된 재고 중 최신정보를 가져온다. -->
<select id="getFinalInventoryRegistInfo" parameterType="map" resultType="map">
SELECT
IM.*
FROM INVENTORY_MNG IM
WHERE 1=1
AND IM.IS_LAST = 'Y'
<if test="OBJID != null and OBJID != ''">
AND PARENT_OBJID = #{OBJID}::numeric
</if>
<if test="IS_LAST != null and IS_LAST != ''">
AND IS_LAST = #{IS_LAST}
</if>
<if test="LOCATION != null and LOCATION != ''">
AND LOCATION = #{LOCATION}
</if>
</select>
<!-- 재고정보를 가져온다. -->
<select id="getInventoryRegistInfo" parameterType="map" resultType="map">
SELECT
OBJID,
STANDARD,
UNIT_TITLE,
UNIT,
WEIGHT,
REGDATE,
TO_CHAR(RM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
TO_CHAR(RM.REGDATE,'YYYY') AS REGDATE_YEAR_TITLE,
WRITER,
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = RM.WRITER) AS WRITER_TITLE,
IM.QTY,
IM.REGDATE_TITLE,
IM.REMARK,
IM.LOCATION,
IM.REMARK,
IM.INVENTORY_OBJID
FROM
RESOURCE_MNG RM
LEFT OUTER JOIN
(
SELECT
OBJID AS INVENTORY_OBJID,
PARENT_OBJID,
QTY,
LOCATION,
REMARK,
TO_CHAR(REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE
FROM
INVENTORY_MNG
WHERE 1=1
<if test="IS_LAST != null and IS_LAST != ''">
AND IS_LAST = #{IS_LAST}
</if>
<if test="LOCATION != null and LOCATION != ''">
AND LOCATION = #{LOCATION}
</if>
) IM
ON RM.OBJID = IM.PARENT_OBJID
WHERE 1=1
<if test="OBJID != null and OBJID != ''">
AND RM.OBJID = #{OBJID}::numeric
</if>
</select>
<!-- 해당 자재마스터내 동일 위치 재고 변경 시 최종여부를 초기화 한다. -->
<update id="resetInventoryRegist" parameterType="map">
UPDATE
INVENTORY_MNG
SET
IS_LAST = 'N'
WHERE PARENT_OBJID = #{PARENT_OBJID}::numeric
AND LOCATION = #{LOCATION}
</update>
<!-- 재고관리 재고등록 -->
<update id="insertInventoryRegist" parameterType="map">
INSERT INTO INVENTORY_MNG
(
OBJID
,PARENT_OBJID
,QTY
,LOCATION
,REMARK
,REGDATE
,WRITER
,IS_LAST
)
VALUES
(
#{OBJID}::numeric
,#{PARENT_OBJID}::numeric
,#{QTY}::numeric
,#{LOCATION}
,#{REMARK}
,#{DELIVERY_DATE}::TIMESTAMP
,#{WRITER}
,'Y'
)
</update>
<!-- 재고관리 재고등록(발주서 입고) -->
<update id="insertDeliveryInventoryRegist" parameterType="map">
INSERT INTO INVENTORY_MNG
(
OBJID
,PARENT_OBJID
,PART_OBJID
,LD_PART_OBJID
,QTY
,LOCATION
,SUB_LOCATION
,REMARK
,REGDATE
,WRITER
,IS_LAST
)
VALUES
(
#{OBJID}::NUMERIC
,(SELECT OBJID FROM RESOURCE_MNG WHERE 1=1 AND PART_OBJID = #{PART_OBJID})
,#{PART_OBJID}
,#{LD_PART_OBJID}
,#{QTY}::NUMERIC
,#{LOCATION}
,#{SUB_LOCATION}
,#{REMARK}
,NOW()
,#{WRITER}
,'Y'
)
</update>
<update id="insertDeliveryInventoryRegistLD" parameterType="map">
INSERT INTO INVENTORY_MNG
(
OBJID
,PARENT_OBJID
,PART_OBJID
,LD_PART_OBJID
,QTY
,LOCATION
,SUB_LOCATION
,REMARK
,REGDATE
,WRITER
,IS_LAST
)
VALUES
(
#{OBJID}::NUMERIC
,(SELECT OBJID FROM RESOURCE_MNG WHERE 1=1 AND LD_PART_OBJID = #{LD_PART_OBJID})
,#{PART_OBJID}
,#{LD_PART_OBJID}
,#{QTY}::NUMERIC
,#{LOCATION}
,#{SUB_LOCATION}
,#{REMARK}
,NOW()
,#{WRITER}
,'Y'
)
</update>
<!-- 자재투입 등록 -->
<insert id="insertInputResource" parameterType="map">
INSERT INTO INPUT_RESOURCE
(
OBJID
,PARENT_OBJID
,TARGET_OBJID
,INPUT_QTY
,INPUT_DATE
,REGDATE
,WRITER
,USED
)
VALUES
(
#{OBJID}::numeric
,#{PARENT_OBJID}::numeric
,#{TARGET_OBJID}::numeric
,#{INPUT_QTY}::numeric
,#{INPUT_DATE}::TIMESTAMP
,NOW()
,#{WRITER}
,#{used}
)
</insert>
<delete id="deleteInventoryMng" parameterType="map">
DELETE FROM INVENTORY_MNG WHERE PARENT_OBJID = #{OBJID}::numeric
</delete>
<!-- 재고관리 이력목록을 가져온다. -->
<select id="getInventoryHistoryList" parameterType="map" resultType="map">
SELECT
T.*
FROM (
SELECT
ROW_NUMBER() OVER(ORDER BY IM.REGDATE) RNUM,
RM.OBJID,
(SELECT PART_NO FROM PART_MNG WHERE OBJID::VARCHAR = RM.PART_OBJID) AS PART_NO,
RM.PART_OBJID,
RM.PART_NAME,
RM.SPEC,
RM.MATERIAL,
RM.WEIGHT,
RM.THICKNESS ,
RM.WIDTH ,
RM.HEIGHT ,
RM.OUT_DIAMETER,
RM.IN_DIAMETER ,
RM.LENGTH ,
RM.UNIT,
IM.QTY,
IR.INPUT_QTY,
IR.USED,
TO_CHAR(IR.INPUT_DATE,'YYYY-MM-DD') AS INPUT_DATE_TITLE,
IM.REMARK,
MDM.WARE_QTY AS ARRIVAL_QTY,
MDM.WARE_DATE AS ARRIVAL_DATE
FROM
INVENTORY_MNG IM
INNER JOIN
RESOURCE_MNG RM
ON RM.OBJID = IM.PARENT_OBJID
LEFT OUTER JOIN
INPUT_RESOURCE IR
ON IM.OBJID = IR.PARENT_OBJID
LEFT OUTER JOIN
(
SELECT
T.*,
CODE_NAME(RESULT) AS RESULT_NAME
FROM MATERIAL_DETAIL_MGMT T
) MDM
ON IM.OBJID = MDM.INVENTORY_OBJID
AND UPPER(MDM.RESULT_NAME) = UPPER('OK')
WHERE 1=1
<if test="OBJID != null and OBJID != ''">
AND RM.OBJID = #{OBJID}::numeric
</if>
) T
WHERE 1=1
ORDER BY T.RNUM DESC
</select>
<select id="getInventoryMngInfoForOrder" parameterType="map" resultType="map">
WITH MATER AS(SELECT
RM.RESOURCE_TITLE,
RM.PRODUCT_TITLE,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = RM.RESOURCE_TITLE AND O.PARENT_CODE_ID = #{RESOURCE_TITLE_CD}) AS RESOURCE_NAME,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = RM.PRODUCT_TITLE AND O.PARENT_CODE_ID = RM.RESOURCE_TITLE) AS PRODUCT_NAME,
RM.STANDARD
FROM
INVENTORY_MNG IM , RESOURCE_MNG RM , (SELECT (SELECT O.RESOURCE_TITLE FROM RESOURCE_MNG AS O WHERE O.OBJID = T1.RESOURCE_OBJID) AS RESOURCE_TITLE FROM MATERIAL_MASTER_MGMT AS T ,MATERIAL_DETAIL_MGMT T1
WHERE T.MATERIAL_MASTER_OBJID = T1.MATERIAL_MASTER_OBJID
AND T.STATUS_CD IN('PURSTCD00700','PURSTCD00800','PURSTCD00900')) AS MATER
WHERE RM.OBJID = IM.PARENT_OBJID
AND IM.IS_LAST = 'Y'
AND RM.RESOURCE_TITLE = MATER.RESOURCE_TITLE
GROUP BY
RM.RESOURCE_TITLE,
RM.PRODUCT_TITLE,
RM.STANDARD)
SELECT
T.*
,CASE WHEN
(SELECT COUNT(1) FROM MATER AS O1 WHERE O1.PRODUCT_NAME = T.PRODUCT_NAME AND O1.STANDARD = T.STANDARD) <![CDATA[ > ]]> 0
THEN '발주'
ELSE NULL END AS ORDER_YN
FROM(
SELECT
RM.RESOURCE_TITLE,
RM.PRODUCT_TITLE,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = RM.RESOURCE_TITLE AND O.PARENT_CODE_ID = #{RESOURCE_TITLE_CD}) AS RESOURCE_NAME,
(SELECT O.CODE_NAME FROM COMM_CODE O WHERE O.CODE_ID = RM.PRODUCT_TITLE AND O.PARENT_CODE_ID = RM.RESOURCE_TITLE) AS PRODUCT_NAME,
RM.STANDARD,
SUM(IM.QTY) AS INVENTORY_QTY
FROM
INVENTORY_MNG IM
INNER JOIN
RESOURCE_MNG RM
ON RM.OBJID = IM.PARENT_OBJID
WHERE 1=1
AND IM.IS_LAST = 'Y'
GROUP BY
RM.RESOURCE_TITLE,
RM.PRODUCT_TITLE,
RM.STANDARD
) T
WHERE 1=1
<!-- <if test="RESOURCE_NAME != null and RESOURCE_NAME != ''">
AND T.RESOURCE_NAME = #{RESOURCE_NAME}
</if> -->
<if test="PRODUCT_NAME != null and PRODUCT_NAME != ''">
AND T.PRODUCT_NAME = #{PRODUCT_NAME}
</if>
<if test="STANDARD != null and STANDARD != ''">
AND T.STANDARD = #{STANDARD}
</if>
</select>
<!-- 재고관리 재고등록 -->
<insert id="saveinventoryForm" parameterType="map">
INSERT INTO INVENTORY_MGMT
(
OBJID
,CONTRACT_OBJID
,UNIT
,PART_OBJID
,CLS_CD
,CAU_CD
,QTY
,LOCATION
,REG_DATE
,PRICE
,WRITER
)
VALUES
(
#{objid}
,#{project_no}
,#{unit}
,#{part_no}
,#{cls_cd}
,#{cau_cd}
,#{qty}
,#{location}
,#{reg_date}
,#{price}
,#{writer}
)
</insert>
<!-- 재고관리 목록 Count를 가져온다. -->
<select id="getInventoryMngListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM(
SELECT TBL.*
FROM(
SELECT
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = IM.CONTRACT_OBJID) AS PROJECT_NO
<!-- ,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.UNIT) AS UNIT_NAME -->
,(SELECT TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = IM.UNIT) AS UNIT_NAME
,(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NO
,(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NAME
,(SELECT SPEC FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS SPEC
,(SELECT MAKER FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS MAKER
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CLS_CD) AS CLS_CD_NAME
,IM.CLS_CD
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CAU_CD) AS CAU_CD_NAME
,IM.CAU_CD
,IM.QTY
,IM.LOCATION
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.LOCATION) AS LOCATION_NAME
,IM.REG_DATE
,IM.PRICE
,IM.WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.WRITER) AS WRITER_NAME
,SUBSTR(REG_DATE,0,5) AS REGDATE
,CONTRACT_OBJID
,UNIT
FROM INVENTORY_MGMT AS IM
) TBL WHERE 1=1
<if test="Year != null and Year !=''">
AND REGDATE = #{Year}
</if>
<if test="project_no != null and project_no != ''">
AND CONTRACT_OBJID = #{project_no}
</if>
<if test="unit_code != null and unit_code != ''">
AND UNIT = #{unit_code}
</if>
<if test="part_no != null and part_no != ''">
AND UPPER(PART_NO) LIKE UPPER('%${part_no}%')
</if>
<if test="part_name != null and part_name != ''">
AND UPPER(PART_NAME) LIKE UPPER('%${part_name}%')
</if>
<if test="spec != null and spec != ''">
AND UPPER(SPEC) LIKE UPPER('%${spec}%')
</if>
<if test="cls_cd != null and cls_cd != ''">
AND CLS_CD = #{cls_cd}
</if>
<if test="cau_cd != null and cau_cd != ''">
AND CAU_CD = #{cau_cd}
</if>
<if test="location != null and location != ''">
AND LOCATION = #{location}
</if>
<if test="writer != null and writer != ''">
AND WRITER = #{writer}
</if>
) TBL WHERE 1=1
)A WHERE 1=1
</select>
<!-- 재고관리 목록을 가져온다. -->
<select id="getInventoryMngList" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT TBL.*, ROW_NUMBER() OVER(ORDER BY REG_DATE DESC) RNUM
FROM(
SELECT TBL.*
FROM(
SELECT
OBJID
,(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = IM.CONTRACT_OBJID) AS PROJECT_NO
<!-- ,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.UNIT) AS UNIT_NAME -->
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = IM.UNIT) AS UNIT_NAME
,(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NO
,(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NAME
,(SELECT SPEC FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS SPEC
,(SELECT MAKER FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS MAKER
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CLS_CD) AS CLS_CD_NAME
,IM.CLS_CD
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CAU_CD) AS CAU_CD_NAME
,IM.CAU_CD
,IM.QTY
,IM.LOCATION
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.LOCATION) AS LOCATION_NAME
,IM.REG_DATE
,IM.PRICE
,IM.WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.WRITER) AS WRITER_NAME
,SUBSTR(REG_DATE,0,5) AS REGDATE
,CONTRACT_OBJID
,UNIT
FROM INVENTORY_MGMT AS IM
) TBL
WHERE 1=1
<if test="Year != null and Year !=''">
AND REGDATE = #{Year}
</if>
<if test="project_no != null and project_no != ''">
AND CONTRACT_OBJID = #{project_no}
</if>
<if test="unit_code != null and unit_code != ''">
AND UNIT = #{unit_code}
</if>
<if test="part_no != null and part_no != ''">
AND UPPER(PART_NO) LIKE UPPER('%${part_no}%')
</if>
<if test="part_name != null and part_name != ''">
AND UPPER(PART_NAME) LIKE UPPER('%${part_name}%')
</if>
<if test="spec != null and spec != ''">
AND UPPER(SPEC) LIKE UPPER('%${spec}%')
</if>
<if test="cls_cd != null and cls_cd != ''">
AND CLS_CD = #{cls_cd}
</if>
<if test="cau_cd != null and cau_cd != ''">
AND CAU_CD = #{cau_cd}
</if>
<if test="location != null and location != ''">
AND LOCATION = #{location}
</if>
<if test="writer != null and writer != ''">
AND WRITER = #{writer}
</if>
)TBL WHERE 1=1
) A WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</select>
<!-- 재고관리 목록을 가져온다. -->
<select id="getInventoryMngGridList" parameterType="map" resultType="map">
SELECT
IM.*
,(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = IM.CONTRACT_OBJID) AS PROJECT_NO
,(COALESCE((SELECT SUM(CASE WHEN (RECEIPT_QTY IS NULL OR RECEIPT_QTY ='')
THEN 0
ELSE (RECEIPT_QTY::numeric - coalesce(MOVE_QTY::numeric, 0)) END)
FROM INVENTORY_MGMT_IN AS O WHERE O.PARENT_OBJID = IM.OBJID
),0)
- COALESCE((SELECT SUM(CASE WHEN (REQUEST_QTY IS NULL OR REQUEST_QTY ='')
THEN 0
ELSE REQUEST_QTY::NUMERIC END)
<!-- SUM(CASE WHEN (OUT_QTY IS NULL OR OUT_QTY ='')
THEN 0
ELSE OUT_QTY::NUMERIC END) -->
FROM INVENTORY_MGMT_OUT AS O WHERE O.PARENT_OBJID = IM.OBJID
),0)) AS USE_CNT
,(COALESCE((SELECT SUM(CASE WHEN (RECEIPT_QTY IS NULL OR RECEIPT_QTY ='')
THEN 0
ELSE (RECEIPT_QTY::numeric - coalesce(MOVE_QTY::numeric, 0)) END)
FROM INVENTORY_MGMT_IN AS O
,INVENTORY_MGMT AS S_IM
WHERE S_IM.PART_OBJID = IM.PART_OBJID
AND O.PARENT_OBJID = S_IM.OBJID
),0)
- COALESCE((SELECT SUM(CASE WHEN (REQUEST_QTY IS NULL OR REQUEST_QTY ='')
THEN 0
ELSE REQUEST_QTY::NUMERIC END)
FROM INVENTORY_MGMT_OUT AS O
,INVENTORY_MGMT AS S_IM
WHERE S_IM.PART_OBJID = IM.PART_OBJID
AND O.PARENT_OBJID = S_IM.OBJID
),0)) AS USE_CNT_ALL
,COALESCE((SELECT SUM(CASE WHEN (OUT_QTY IS NULL OR OUT_QTY ='')
THEN 0
ELSE OUT_QTY::NUMERIC END)
FROM INVENTORY_MGMT_OUT AS O WHERE O.PARENT_OBJID = IM.OBJID
),0) AS REQUEST_QTY
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = IM.UNIT) AS UNIT_NAME
<!-- ,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.LOCATION) AS LOCATION_NAME -->
,(SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT CODE_NAME(LOCATION)), ',') FROM INVENTORY_MGMT_IN IMI WHERE IMI.PARENT_OBJID = IM.OBJID<!-- AND (IMI.RECEIPT_QTY::NUMERIC - NVL(IMI.MOVE_QTY,'0')::NUMERIC - NVL(IMI.OUT_QTY,'0')::NUMERIC) > 0 -->) AS LOCATION_NAME
,(SELECT MAX(O.REMARK) FROM INVENTORY_MGMT_OUT_MASTER AS O
WHERE O.OBJID IN (SELECT T1.INVENTORY_REQUEST_MASTER_OBJID FROM INVENTORY_MGMT_OUT AS T1 WHERE T1.PARENT_OBJID = IM.OBJID ORDER BY T1.REGDATE DESC LIMIT 1)
) AS REMARK
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CLS_CD) AS CLS_CD_NAME
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CAU_CD) AS CAU_CD_NAME
FROM(
SELECT
ROW_NUMBER() OVER() AS RNUM,
IM.OBJID
,IM.PART_OBJID
<!--
,(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NO
,(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NAME
,(SELECT SPEC FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS SPEC
,(SELECT MAKER FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS MAKER
,(SELECT CODE_NAME(PART_TYPE) FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_TYPE_NAME
,(SELECT PART_TYPE FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_TYPE
,(SELECT MATERIAL FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS MATERIAL
-->
, P.PART_NO
, P.PART_NAME
, P.SPEC
, P.MAKER
, CODE_NAME(PART_TYPE) PART_TYPE_NAME
, P.PART_TYPE
, P.MATERIAL
,IM.CLS_CD
,IM.CAU_CD
,IM.QTY
,IM.LOCATION
,IM.REG_DATE
,IM.PRICE
,IM.WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.WRITER) AS WRITER_NAME
,SUBSTR(IM.REG_DATE,0,5) AS REGDATE
,IM.CONTRACT_OBJID
,IM.UNIT
FROM
INVENTORY_MGMT AS IM
INNER JOIN PART_MNG P
ON P.OBJID::VARCHAR = IM.PART_OBJID
WHERE 1=1
<if test="Year != null and Year !=''">
AND IM.REGDATE = #{Year}
</if>
<!-- <if test="project_no != null and project_no != ''">
AND CONTRACT_OBJID = #{project_no}
</if> -->
<if test="project_nos != null and project_nos != ''">
AND IM.CONTRACT_OBJID IN
<foreach item="state" collection="project_nos.split(',')"
open="(" separator="," close=")">
#{state}
</foreach>
</if>
<if test="unit_code != null and unit_code != ''">
AND IM.UNIT = #{unit_code}
</if>
<if test="part_no != null and part_no != ''">
AND UPPER(P.PART_NO) LIKE UPPER('%${part_no}%')
</if>
<if test="part_name != null and part_name != ''">
AND UPPER(P.PART_NAME) LIKE UPPER('%${part_name}%')
</if>
<if test="spec != null and spec != ''">
AND UPPER(P.SPEC) LIKE UPPER('%${spec}%')
</if>
<if test="part_type != null and part_type != ''">
AND P.PART_TYPE = #{part_type}
</if>
<if test="cls_cd != null and cls_cd != ''">
AND IM.CLS_CD = #{cls_cd}
</if>
<if test="cau_cd != null and cau_cd != ''">
AND IM.CAU_CD = #{cau_cd}
</if>
<if test="location != null and location != ''">
AND IM.LOCATION = #{location}
</if>
<if test="writer != null and writer != ''">
AND IM.WRITER = #{writer}
</if>
) IM
WHERE 1=1
</select>
<delete id="deleteinventoryList" parameterType="map">
DELETE FROM INVENTORY_MGMT
WHERE OBJID IN
<foreach collection="checkArr" item="objkey" index="index" separator="," open="(" close=")">
#{objkey}
</foreach>
</delete>
<select id="inventoryMngDashList" parameterType="map" resultType="map">
SELECT
TO_CHAR(TO_DATE(REG_DATE,'YYYY-MM-DD'),'YYYY') AS YYYY
,COUNT(DISTINCT CASE WHEN CLS_CD = '0001205' THEN PART_OBJID ELSE NULL END) AS I_PART_CNT
,SUM(DISTINCT CASE WHEN CLS_CD = '0001205' THEN T.QTY::NUMERIC ELSE NULL END) AS I_QTY
,SUM(CASE WHEN CLS_CD = '0001205' THEN T.QTY::NUMERIC * T.PRICE::NUMERIC ELSE NULL END) AS I_PRICE
,SUM(DISTINCT CASE WHEN CLS_CD = '0001205' AND CAU_CD = '0001208' THEN T.QTY::NUMERIC ELSE NULL END) AS I_QTY_C1
,SUM(DISTINCT CASE WHEN CLS_CD = '0001205' AND CAU_CD = '0001211' THEN T.QTY::NUMERIC ELSE NULL END) AS I_QTY_C2
,SUM(DISTINCT CASE WHEN CLS_CD = '0001205' AND CAU_CD = '0001209' THEN T.QTY::NUMERIC ELSE NULL END) AS I_QTY_C3
,SUM(H_INPUT_QTY::NUMERIC) AS T_QTY
,SUM(H_INPUT_QTY::NUMERIC * T.PRICE::NUMERIC) AS T_PRICE
,SUM(CASE WHEN CLS_CD = '0001205' THEN (T.QTY::NUMERIC - COALESCE(H_INPUT_QTY::NUMERIC,0)) ELSE NULL END) AS T_REMAIN_QTY
,SUM(CASE WHEN CLS_CD = '0001205' THEN (QTY::NUMERIC - COALESCE(H_INPUT_QTY::NUMERIC,0)) * PRICE::NUMERIC ELSE NULL END) AS T_REMAIN_PRICE
,COUNT(DISTINCT CASE WHEN CLS_CD = '0001206' THEN PART_OBJID ELSE NULL END) AS D_PART_CNT
,SUM(CASE WHEN CLS_CD = '0001206' THEN QTY::NUMERIC ELSE NULL END) AS D_QTY
,SUM(CASE WHEN CLS_CD = '0001206' THEN QTY::NUMERIC * PRICE::NUMERIC ELSE NULL END) AS D_PRICE
,SUM(CASE WHEN CLS_CD = '0001206' AND CAU_CD = '0001209' THEN QTY::NUMERIC ELSE NULL END) AS D_QTY_C1
,SUM(CASE WHEN CLS_CD = '0001206' AND CAU_CD = '0001210' THEN QTY::NUMERIC ELSE NULL END) AS D_QTY_C2
FROM
(SELECT
T.*, H_INPUT_QTY
FROM
INVENTORY_MGMT T
LEFT JOIN (SELECT PARENT_OBJID, COALESCE(SUM(INPUT_QTY::NUMERIC),0) AS H_INPUT_QTY
FROM INVENTORY_MGMT_HISTORY
GROUP BY PARENT_OBJID )A
ON T.OBJID = A.PARENT_OBJID)T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(REG_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
GROUP BY 1
</select>
<!-- 재고품 투입 목록 Count를 가져온다. -->
<select id="getInventoryMngInputListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM(
SELECT TBL.*
FROM(
SELECT
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = IM.CONTRACT_OBJID) AS PROJECT_NO
<!-- ,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.UNIT) AS UNIT_NAME -->
,(SELECT TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = IM.UNIT) AS UNIT_NAME
,(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NO
,(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NAME
,(SELECT SPEC FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS SPEC
,(SELECT MAKER FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS MAKER
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CLS_CD) AS CLS_CD_NAME
,IM.CLS_CD
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CAU_CD) AS CAU_CD_NAME
,IM.CAU_CD
,IM.QTY
,IM.LOCATION
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.LOCATION) AS LOCATION_NAME
,IM.REG_DATE
,IM.PRICE
,IM.WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.WRITER) AS WRITER_NAME
,SUBSTR(REG_DATE,0,5) AS REGDATE
,CONTRACT_OBJID
,UNIT
FROM INVENTORY_MGMT AS IM
) TBL WHERE 1=1
AND CLS_CD = '0001205'
<if test="Year != null and Year !=''">
AND REGDATE = #{Year}
</if>
<if test="project_no != null and project_no != ''">
AND CONTRACT_OBJID = #{project_no}
</if>
<if test="unit_code != null and unit_code != ''">
AND UNIT = #{unit_code}
</if>
<if test="part_no != null and part_no != ''">
AND UPPER(PART_NO) LIKE UPPER('%${part_no}%')
</if>
<if test="part_name != null and part_name != ''">
AND UPPER(PART_NAME) LIKE UPPER('%${part_name}%')
</if>
<if test="spec != null and spec != ''">
AND UPPER(SPEC) LIKE UPPER('%${spec}%')
</if>
<if test="cau_cd != null and cau_cd != ''">
AND CAU_CD = #{cau_cd}
</if>
<if test="location != null and location != ''">
AND LOCATION = #{location}
</if>
<if test="writer != null and writer != ''">
AND WRITER = #{writer}
</if>
) TBL WHERE 1=1
)A WHERE 1=1
</select>
<!-- 재고품 투입 목록을 가져온다. -->
<select id="getInventoryMngInputList" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT TBL.*, ROW_NUMBER() OVER(ORDER BY REG_DATE DESC) RNUM
FROM(
SELECT TBL.*
FROM(
SELECT
OBJID
,(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = IM.CONTRACT_OBJID) AS PROJECT_NO
<!-- ,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.UNIT) AS UNIT_NAME -->
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = IM.UNIT) AS UNIT_NAME
,(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NO
,(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NAME
,(SELECT SPEC FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS SPEC
,(SELECT MAKER FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS MAKER
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CLS_CD) AS CLS_CD_NAME
,IM.CLS_CD
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CAU_CD) AS CAU_CD_NAME
,IM.CAU_CD
,IM.QTY
,IM.LOCATION
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.LOCATION) AS LOCATION_NAME
,IM.REG_DATE
,IM.PRICE
,IM.WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.WRITER) AS WRITER_NAME
,SUBSTR(REG_DATE,0,5) AS REGDATE
,CONTRACT_OBJID
,UNIT
,input_contract_objid
,(SELECT PROJECT_NO FROM CONTRACT_MGMT AS O WHERE O.OBJID = IM.input_contract_objid) AS input_project_no
<!-- ,input_qty -->
,(SELECT COALESCE(SUM(O.INPUT_QTY::INTEGER),0) FROM INVENTORY_MGMT_HISTORY AS O WHERE O.PARENT_OBJID = IM.OBJID::VARCHAR) AS INPUT_QTY
--,input_date
,(SELECT MAX(input_date) FROM INVENTORY_MGMT_HISTORY AS O WHERE O.PARENT_OBJID = IM.OBJID::VARCHAR) AS INPUT_DATE
,assumption_user
,successor_user
<!-- ,(qty::numeric - input_qty::numeric) as remain_qty -->
,IM.QTY::INTEGER - (SELECT COALESCE(SUM(O.INPUT_QTY::INTEGER),0) FROM INVENTORY_MGMT_HISTORY AS O WHERE O.PARENT_OBJID = IM.OBJID::VARCHAR) AS remain_qty
FROM INVENTORY_MGMT AS IM
) TBL
WHERE 1=1
AND CLS_CD = '0001205'
<if test="Year != null and Year !=''">
AND REGDATE = #{Year}
</if>
<if test="project_no != null and project_no != ''">
AND CONTRACT_OBJID = #{project_no}
</if>
<if test="unit_code != null and unit_code != ''">
AND UNIT = #{unit_code}
</if>
<if test="part_no != null and part_no != ''">
AND UPPER(PART_NO) LIKE UPPER('%${part_no}%')
</if>
<if test="part_name != null and part_name != ''">
AND UPPER(PART_NAME) LIKE UPPER('%${part_name}%')
</if>
<if test="spec != null and spec != ''">
AND UPPER(SPEC) LIKE UPPER('%${spec}%')
</if>
<if test="cls_cd != null and cls_cd != ''">
AND CLS_CD = #{cls_cd}
</if>
<if test="cau_cd != null and cau_cd != ''">
AND CAU_CD = #{cau_cd}
</if>
<if test="location != null and location != ''">
AND LOCATION = #{location}
</if>
<if test="writer != null and writer != ''">
AND WRITER = #{writer}
</if>
)TBL WHERE 1=1
) A WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</select>
<!-- 재고품 투입 목록을 가져온다. -->
<select id="getInventoryMngInputGridList" parameterType="map" resultType="map">
SELECT
TBL.*
FROM(
SELECT
OBJID
,(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = IM.CONTRACT_OBJID) AS PROJECT_NO
<!-- ,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.UNIT) AS UNIT_NAME -->
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = IM.UNIT) AS UNIT_NAME
,(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NO
,(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NAME
,(SELECT SPEC FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS SPEC
,(SELECT MAKER FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS MAKER
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CLS_CD) AS CLS_CD_NAME
,IM.CLS_CD
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CAU_CD) AS CAU_CD_NAME
,IM.CAU_CD
,IM.QTY
,IM.LOCATION
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.LOCATION) AS LOCATION_NAME
,IM.REG_DATE
,IM.PRICE
,IM.WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.WRITER) AS WRITER_NAME
,SUBSTR(REG_DATE,0,5) AS REGDATE
,CONTRACT_OBJID
,UNIT
,input_contract_objid
,(SELECT PROJECT_NO FROM CONTRACT_MGMT AS O WHERE O.OBJID = IM.input_contract_objid) AS input_project_no
<!-- ,input_qty -->
,(SELECT COALESCE(SUM(O.INPUT_QTY::INTEGER),0) FROM INVENTORY_MGMT_HISTORY AS O WHERE O.PARENT_OBJID = IM.OBJID::VARCHAR) AS INPUT_QTY
--,input_date
,(SELECT MAX(input_date) FROM INVENTORY_MGMT_HISTORY AS O WHERE O.PARENT_OBJID = IM.OBJID::VARCHAR) AS INPUT_DATE
,assumption_user
,successor_user
<!-- ,(qty::numeric - input_qty::numeric) as remain_qty -->
,IM.QTY::INTEGER - (SELECT COALESCE(SUM(O.INPUT_QTY::INTEGER),0) FROM INVENTORY_MGMT_HISTORY AS O WHERE O.PARENT_OBJID = IM.OBJID::VARCHAR) AS remain_qty
FROM
INVENTORY_MGMT AS IM
) TBL
WHERE 1=1
AND CLS_CD = '0001205'
<if test="Year != null and Year !=''">
AND REGDATE = #{Year}
</if>
<if test="project_no != null and project_no != ''">
AND CONTRACT_OBJID = #{project_no}
</if>
<if test="unit_code != null and unit_code != ''">
AND UNIT = #{unit_code}
</if>
<if test="part_no != null and part_no != ''">
AND UPPER(PART_NO) LIKE UPPER('%${part_no}%')
</if>
<if test="part_name != null and part_name != ''">
AND UPPER(PART_NAME) LIKE UPPER('%${part_name}%')
</if>
<if test="spec != null and spec != ''">
AND UPPER(SPEC) LIKE UPPER('%${spec}%')
</if>
<if test="cls_cd != null and cls_cd != ''">
AND CLS_CD = #{cls_cd}
</if>
<if test="cau_cd != null and cau_cd != ''">
AND CAU_CD = #{cau_cd}
</if>
<if test="location != null and location != ''">
AND LOCATION = #{location}
</if>
<if test="writer != null and writer != ''">
AND WRITER = #{writer}
</if>
</select>
<select id="inventory_mgmt" parameterType="map" resultType="map">
SELECT T.*
,T.QTY::INTEGER - (SELECT COALESCE(SUM(O.INPUT_QTY::INTEGER),0) FROM INVENTORY_MGMT_HISTORY AS O WHERE O.PARENT_OBJID = T.OBJID::VARCHAR) AS DETAIL_QTY
FROM INVENTORY_MGMT AS T
WHERE T.OBJID = #{OBJID}
</select>
<insert id="saveInventoryInputFormPopUp" parameterType="map">
INSERT INTO INVENTORY_MGMT_HISTORY
(
OBJID
,PARENT_OBJID
,CONTRACT_OBJID
,REG_DATE
,INPUT_QTY
,INPUT_DATE
,ASSUMPTION_USER
,SUCCESSOR_USER
)
VALUES
(
#{HISOBJID}
,#{OBJID}
,#{input_contract_objid}
,now()
,#{input_qty }
,#{input_date }
,#{assumption_user }
,#{successor_user }
)
</insert>
<select id="getInventoryMngHistoryListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT/#{COUNT_PER_PAGE})::numeric::integer AS MAX_PAGE_SIZE,
TOTAL_CNT::numeric
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM(
SELECT TBL.*
FROM(
SELECT
(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = IM.CONTRACT_OBJID) AS PROJECT_NO
,IM.INPUT_QTY
,IM.INPUT_DATE
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.ASSUMPTION_USER) AS ASSUMPTION_USER_NAME
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.SUCCESSOR_USER) AS SUCCESSOR_USER_NAME
,SUBSTR(REG_DATE,0,5) AS REGDATE
,CONTRACT_OBJID
FROM INVENTORY_MGMT_HISTORY AS IM
WHERE PARENT_OBJID = #{OBJID}
) TBL WHERE 1=1
) TBL WHERE 1=1
)A WHERE 1=1
</select>
<!-- 재고관리 목록을 가져온다. -->
<select id="getInventoryMngHistoryList" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT TBL.*, ROW_NUMBER() OVER(ORDER BY INPUT_DATE DESC) RNUM
FROM(
SELECT TBL.*
FROM(
SELECT
OBJID
,(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = IM.CONTRACT_OBJID) AS PROJECT_NO
,IM.INPUT_QTY
,IM.INPUT_DATE
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.ASSUMPTION_USER) AS ASSUMPTION_USER_NAME
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.SUCCESSOR_USER) AS SUCCESSOR_USER_NAME
,SUBSTR(REG_DATE,0,5) AS REGDATE
,CONTRACT_OBJID
FROM INVENTORY_MGMT_HISTORY AS IM
WHERE PARENT_OBJID = #{OBJID}
) TBL
)TBL WHERE 1=1
) A WHERE 1=1
AND <![CDATA[ RNUM::integer <= #{PAGE_END}::integer ]]>
AND <![CDATA[ RNUM::integer >= #{PAGE_START}::integer]]>
</select>
<update id="deleteinventoryHistoryList" parameterType="map">
DELETE FROM INVENTORY_MGMT_HISTORY WHERE OBJID = #{OBJID}
</update>
<!-- 자재관리 마스터 정보 O -->
<select id="getInventoryInfo" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
OBJID
FROM INVENTORY_MGMT
WHERE CONTRACT_OBJID = #{CONTRACT_OBJID}
AND UNIT = #{UNIT}
AND PART_OBJID = #{PART_OBJID}
</select>
<select id="getSameInventoryInQTYInfo" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
SUM(CASE WHEN (RECEIPT_QTY IS NULL OR RECEIPT_QTY ='') THEN 0 ELSE RECEIPT_QTY::NUMERIC END) AS INVENTORY_QTY
FROM
INVENTORY_MGMT_IN IMI
WHERE 1=1
AND PURCHASE_ORDER_MASTER_OBJID = #{MULTI_MASTER_OBJID}
AND CONTRACT_MGMT_OBJID = #{CONTRACT_MGMT_OBJID}
AND PARENT_OBJID = #{PARENT_OBJID}
</select>
<update id="insertInventory" parameterType="map">
INSERT INTO INVENTORY_MGMT
(
OBJID
,CONTRACT_OBJID
, UNIT
, PART_OBJID
, CLS_CD
, CAU_CD
, QTY
, LOCATION
, SUB_LOCATION
, REG_DATE
, PRICE
, WRITER
, INPUT_CONTRACT_OBJID
, INPUT_QTY
, INPUT_DATE
, ASSUMPTION_USER
, SUCCESSOR_USER
)
VALUES
(
#{OBJID}
, #{CONTRACT_OBJID}
, #{UNIT}
, #{PART_OBJID}
, '0001205'
, #{CAU_CD}
, #{RECEIPT_QTY}
, #{LOCATION}
, #{SUB_LOCATION}
, to_char(now(),'yyyy-mm-dd')
, (SELECT PARTNER_PRICE FROM PURCHASE_ORDER_PART AS O WHERE O.PURCHASE_ORDER_MASTER_OBJID =#{ORDER_OBJID} AND PART_OBJID = #{PART_OBJID})
, #{WRITER}
, #{INPUT_CONTRACT_OBJID}
, #{INPUT_QTY}
, #{INPUT_DATE}
, #{ASSUMPTION_USER}
, #{SUCCESSOR_USER}
) ON CONFLICT (CONTRACT_OBJID,UNIT,PART_OBJID) DO
UPDATE
SET REG_DATE = #{REG_DATE}
</update>
<update id="insertInventoryIn" parameterType="map">
INSERT INTO INVENTORY_MGMT_IN
(
OBJID
, PARENT_OBJID
, RECEIPT_QTY
, LOCATION
, SUB_LOCATION
, WRITER
, REGDATE
, CONTRACT_MGMT_OBJID
, PURCHASE_ORDER_MASTER_OBJID
, PURCHASE_ORDER_SUB_OBJID
)
VALUES
(
#{OBJID}
, #{PARENT_OBJID}
, #{RECEIPT_QTY}
, #{LOCATION}
, #{SUB_LOCATION}
, #{WRITER}
, now()
, #{CONTRACT_MGMT_OBJID}
, #{PURCHASE_ORDER_MASTER_OBJID}
, #{PURCHASE_ORDER_SUB_OBJID}
)
</update>
<select id="inventoryMngDashGridList" parameterType="map" resultType="map">
WITH RECURSIVE VIEW_BOM(
BOM_REPORT_OBJID,
OBJID,
PARENT_OBJID,
CHILD_OBJID,
PARENT_PART_NO,
PART_NO,
QTY,
REGDATE,
SEQ,
LEV,
PATH,
CYCLE
) AS (
SELECT
A.BOM_REPORT_OBJID,
A.OBJID,
A.PARENT_OBJID,
A.CHILD_OBJID,
A.PARENT_PART_NO,
A.PART_NO,
A.QTY,
A.REGDATE,
A.SEQ,
1,
ARRAY [A.CHILD_OBJID::TEXT],
FALSE
FROM
BOM_PART_QTY A
WHERE 1=1
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
UNION ALL
SELECT
B.BOM_REPORT_OBJID,
B.OBJID,
B.PARENT_OBJID,
B.CHILD_OBJID,
B.PARENT_PART_NO,
B.PART_NO,
B.QTY,
B.REGDATE,
B.SEQ,
LEV + 1,
PATH||B.CHILD_OBJID::TEXT,
B.PARENT_OBJID = ANY(PATH)
FROM
BOM_PART_QTY B
JOIN
VIEW_BOM
ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID
AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID
),REF_BOM_INFO AS(
SELECT
V.BOM_REPORT_OBJID AS PARENT_OBJID
,V.PART_NO AS PART_OBJID
,PM.PART_NO
,PM.PART_NAME
,V.LEV
,V.QTY
,(SELECT MAX(LEV) FROM VIEW_BOM) AS MAX_LEV
,SP.OBJID
,SP.SUPPLY_OBJID
,SP.PRICE
,SP.SUPPLY_OBJID1
,SP.PRICE1
,SP.SUPPLY_OBJID2
,SP.PRICE2
,SP.SUPPLY_OBJID3
,SP.PRICE3
,SP.SUPPLY_OBJID4
,SP.PRICE4
,SP.PRICE_SUM
,PM.SPEC
,PM.MAKER
,PM.PART_TYPE
,(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = PM.PART_TYPE) AS PART_TYPE_NAME
,PBR.CONTRACT_OBJID
FROM
VIEW_BOM AS V
LEFT OUTER JOIN
SALES_BOM_REPORT_PART AS SP
ON V.PART_NO = SP.PART_OBJID
AND SP.PARENT_OBJID::VARCHAR = V.BOM_REPORT_OBJID::VARCHAR
LEFT OUTER JOIN
PART_MNG PM
ON V.PART_NO = PM.OBJID::VARCHAR
LEFT OUTER JOIN
PART_BOM_REPORT PBR
ON PBR.OBJID::VARCHAR = V.BOM_REPORT_OBJID::VARCHAR
WHERE 1=1
ORDER BY V.SEQ
)
SELECT
T.*
,(TOTAL_BOM_PART_CNT - TOTAL_PO_PART_CNT) AS NON_PO_PART_CNT /*미발주품수*/
FROM (
SELECT
CM.OBJID
,TO_CHAR(CM.REGDATE, 'YYYY') AS CM_YEAR
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = CM.CUSTOMER_OBJID) AS CUSTOMER_NAME
,CM.CUSTOMER_PROJECT_NAME
,CM.PROJECT_NO
,SBR.OBJID AS SALES_OBJID
,PBR.OBJID AS BOM_REPORT_OBJID
,(
SELECT
COUNT(DISTINCT CASE WHEN PM.PART_TYPE IN (SELECT CODE_ID FROM COMM_CODE WHERE PARENT_CODE_ID = '0000062') THEN BPQ.PART_NO ELSE NULL END)
FROM
BOM_PART_QTY BPQ
,PART_MNG PM
WHERE BPQ.PART_NO = PM.OBJID::VARCHAR
AND BPQ.BOM_REPORT_OBJID = PBR.OBJID
) AS TOTAL_BOM_PART_CNT /*BOM부품개수*/
,(
SELECT
COUNT(DISTINCT RBI.PART_OBJID)
FROM
REF_BOM_INFO RBI
,PURCHASE_ORDER_PART PO
,PURCHASE_ORDER_MASTER POM
WHERE RBI.PARENT_OBJID = PBR.OBJID
AND RBI.PART_OBJID = PO.PART_OBJID
AND POM.STATUS = 'approvalComplete'
AND POM.OBJID = PO.PURCHASE_ORDER_MASTER_OBJID
AND RBI.PART_TYPE IS NOT NULL
<if test="Year !=null and Year != '' ">
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
</if>
AND RBI.PART_TYPE != ''
) AS TOTAL_PO_PART_CNT /*발주품개수*/
,(
SELECT
SUM(POP.ORDER_QTY::NUMERIC)
FROM
PURCHASE_ORDER_MASTER POM
,PURCHASE_ORDER_PART POP
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
<if test="Year !=null and Year != '' ">
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
</if>
AND POM.BOM_REPORT_OBJID = PBR.OBJID
) AS TOTAL_PO_QTY /*발주수량*/
,COALESCE(S1.TOTAL_SUPPLY_UNIT_PRICE, 0) TOTAL_SUPPLY_UNIT_PRICE
,COALESCE(S1.PRICE_PT_1, 0) PRICE_PT_1
,COALESCE(S1.PRICE_PT_2, 0) PRICE_PT_2
,COALESCE(S1.PRICE_PT_ETC, 0) PRICE_PT_ETC
,CASE
WHEN COALESCE(S1.PRICE_PT_1, 0) = 0 THEN 0
ELSE ROUND(COALESCE(S1.PRICE_PT_1, 0) / S1.TOTAL_SUPPLY_UNIT_PRICE * 100, 1)
END AS RATE_PRICE_PT_1
,CASE
WHEN COALESCE(S1.PRICE_PT_2, 0) = 0 THEN 0
ELSE ROUND(COALESCE(S1.PRICE_PT_2, 0) / S1.TOTAL_SUPPLY_UNIT_PRICE * 100, 1)
END AS RATE_PRICE_PT_2
,CASE
WHEN COALESCE(S1.PRICE_PT_ETC, 0) = 0 THEN 0
ELSE ROUND(COALESCE(S1.PRICE_PT_ETC, 0) / S1.TOTAL_SUPPLY_UNIT_PRICE * 100, 1)
END AS RATE_PRICE_PT_ETC
<!-- ,ROUND(COALESCE(S1.PRICE_PT_1, 0) / S1.TOTAL_SUPPLY_UNIT_PRICE * 100, 1) AS RATE_PRICE_PT_1
,ROUND(COALESCE(S1.PRICE_PT_2, 0) / S1.TOTAL_SUPPLY_UNIT_PRICE * 100, 1) AS RATE_PRICE_PT_2
,ROUND(COALESCE(S1.PRICE_PT_ETC, 0) / S1.TOTAL_SUPPLY_UNIT_PRICE * 100, 1) AS RATE_PRICE_PT_ETC -->
,COALESCE(S2.TOTAL_SUPPLY_UNIT_PRICE, 0) RE_TOTAL_SUPPLY_UNIT_PRICE
,(
SELECT
COUNT(1)
FROM
PURCHASE_ORDER_MASTER POM
WHERE POM.STATUS = 'approvalComplete'
AND POM.BOM_REPORT_OBJID = PBR.OBJID
AND POM.ORDER_TYPE_CD = '0001408'
<if test="Year !=null and Year != '' ">
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
</if>
) RE_COUNT,
(SELECT ARRAY_TO_STRING(ARRAY_AGG(RBI.PART_NAME), ',') FROM REF_BOM_INFO RBI WHERE 1 = 1 AND PBR.OBJID = RBI.PARENT_OBJID AND RBI.LEV = '2') AS UNIT_PART_NAME
FROM
SALES_BOM_REPORT SBR
,PART_BOM_REPORT PBR
LEFT OUTER JOIN(
SELECT
POM.BOM_REPORT_OBJID
,SUM(POP.SUPPLY_UNIT_PRICE::NUMERIC) AS TOTAL_SUPPLY_UNIT_PRICE
,SUM(CASE WHEN PM.PART_TYPE IN ('0000063') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_1
,SUM(CASE WHEN PM.PART_TYPE IN ('0000064') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_2
,SUM(CASE WHEN PM.PART_TYPE IN ('0000063','0000064') THEN NULL ELSE POP.SUPPLY_UNIT_PRICE::NUMERIC END) AS PRICE_PT_ETC
FROM
PURCHASE_ORDER_MASTER POM
,PURCHASE_ORDER_PART POP
LEFT OUTER JOIN
PART_MNG PM
ON POP.PART_OBJID = PM.OBJID::VARCHAR
WHERE POM.STATUS = 'approvalComplete'
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
AND POM.ORDER_TYPE_CD = '0001407'
<if test="Year !=null and Year != '' ">
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
</if>
GROUP BY POM.BOM_REPORT_OBJID
) AS S1
ON PBR.OBJID::VARCHAR = S1.BOM_REPORT_OBJID
LEFT OUTER JOIN(
SELECT
POM.BOM_REPORT_OBJID
,SUM(POP.SUPPLY_UNIT_PRICE::NUMERIC) AS TOTAL_SUPPLY_UNIT_PRICE
,SUM(CASE WHEN PM.PART_TYPE IN ('0000063') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_1
,SUM(CASE WHEN PM.PART_TYPE IN ('0000064') THEN POP.SUPPLY_UNIT_PRICE::NUMERIC ELSE NULL END) AS PRICE_PT_2
<!--
,SUM(CASE WHEN PM.PART_TYPE IN ('0000063','0000064') THEN NULL ELSE POP.SUPPLY_UNIT_PRICE::NUMERIC END) AS PRICE_PT_ETC
-->
FROM
PURCHASE_ORDER_MASTER POM
,PURCHASE_ORDER_PART POP
LEFT OUTER JOIN
PART_MNG PM
ON POP.PART_OBJID = PM.OBJID::VARCHAR
WHERE POM.STATUS = 'approvalComplete'
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
AND POM.ORDER_TYPE_CD = '0001408'
<if test="Year !=null and Year != '' ">
AND TO_CHAR(POM.REGDATE,'YYYY') = #{Year}
</if>
GROUP BY POM.BOM_REPORT_OBJID
) AS S2
ON PBR.OBJID::VARCHAR = S2.BOM_REPORT_OBJID
,PROJECT_MGMT CM
WHERE 1=1
AND SBR.PARENT_OBJID = PBR.OBJID
AND PBR.CONTRACT_OBJID = CM.OBJID
<if test="project_no !=null and project_no != '' ">
AND CM.OBJID = #{project_no}
</if>
) AS T
ORDER BY PROJECT_NO DESC
</select>
<!-- 재고관리 목록을 가져온다. -->
<select id="getInventoryMngRequestList" parameterType="map" resultType="map">
SELECT
TBL.*
,DESIGN_QTY1 * QTY1 <!-- * QTY2 --> * nvl(QTY3, '1')::numeric as DESIGN_QTY
FROM(
SELECT
IM.OBJID
,IM.PART_OBJID
,(SELECT PROJECT_NO FROM PROJECT_MGMT AS O WHERE O.OBJID = IM.CONTRACT_OBJID) AS PROJECT_NO
,(IMI.RECEIPT_QTY::NUMERIC - COALESCE(IMI.OUT_QTY::NUMERIC,0) - COALESCE(IMI.MOVE_QTY::NUMERIC,0)) AS USE_CNT
<!-- ,(COALESCE((SELECT SUM(CASE WHEN (RECEIPT_QTY IS NULL OR RECEIPT_QTY ='') THEN 0 ELSE RECEIPT_QTY::NUMERIC END)
FROM INVENTORY_MGMT_IN AS O WHERE O.PARENT_OBJID = IM.OBJID ),0)
- COALESCE((SELECT SUM(CASE WHEN (REQUEST_QTY IS NULL OR REQUEST_QTY ='') THEN 0 ELSE REQUEST_QTY::NUMERIC END)
FROM INVENTORY_MGMT_OUT AS O WHERE O.PARENT_OBJID = IM.OBJID),0)) AS USE_CNT -->
,(SELECT SUM(CASE WHEN (RECEIPT_QTY IS NULL OR RECEIPT_QTY ='') THEN 0 ELSE RECEIPT_QTY::NUMERIC END)
FROM INVENTORY_MGMT_IN AS O WHERE O.PARENT_OBJID = IM.OBJID ) AS QTY
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = IM.UNIT) AS UNIT_NAME
,(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NO
,(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NAME
,(SELECT SPEC FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS SPEC
,(SELECT MAKER FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS MAKER
,(SELECT CODE_NAME(PART_TYPE) FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_TYPE_NAME
,(SELECT PART_TYPE FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_TYPE
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CLS_CD) AS CLS_CD_NAME
,IM.CLS_CD
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IM.CAU_CD) AS CAU_CD_NAME
,(SELECT MATERIAL FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS MATERIAL
,IM.CAU_CD
<!-- ,IM.QTY -->
,IMI.LOCATION
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IMI.LOCATION) AS LOCATION_NAME
,IMI.SUB_LOCATION
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = IMI.SUB_LOCATION) AS SUB_LOCATION_NAME
,IM.REG_DATE
,IM.PRICE
<!-- ,IM.WRITER -->
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.WRITER) AS WRITER_NAME
,SUBSTR(REG_DATE,0,5) AS REGDATE
,IM.CONTRACT_OBJID
,IM.UNIT
,IMI.OBJID AS IN_OBJID
,PBR.OBJID AS BOM_REPORT_OBJID
,(SELECT sum(NVL(QTY, '0')::NUMERIC) FROM BOM_PART_QTY BPQ WHERE BPQ.BOM_REPORT_OBJID = PBR.OBJID AND BPQ.LAST_PART_OBJID = IM.PART_OBJID AND BPQ.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy') ) AS DESIGN_QTY1
,(SELECT MAX(NVL(BPQ.QTY, '0')::NUMERIC) AS QTY FROM BOM_PART_QTY BPQ WHERE BPQ.BOM_REPORT_OBJID = PBR.OBJID AND NVL(PARENT_PART_NO, '') = '' AND BPQ.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy') ) QTY1
<!-- ,(SELECT SUM(NVL(BPQ2.QTY, '0')::NUMERIC) AS QTY FROM BOM_PART_QTY BPQ2 WHERE BPQ2.BOM_REPORT_OBJID = PBR.OBJID
AND BPQ2.PARENT_OBJID = (SELECT MAX(BPQ.CHILD_OBJID) FROM BOM_PART_QTY BPQ WHERE BPQ.BOM_REPORT_OBJID = PBR.OBJID AND NVL(PARENT_PART_NO, '') = '' AND BPQ.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy') ) ) QTY2 -->
,(SELECT SUM(NVL(BPQ3.QTY, '0')::NUMERIC) AS QTY FROM BOM_PART_QTY BPQ3 WHERE BPQ3.BOM_REPORT_OBJID = PBR.OBJID
AND BPQ3.CHILD_OBJID = (SELECT PARENT_OBJID FROM BOM_PART_QTY BPQ WHERE BPQ.BOM_REPORT_OBJID = PBR.OBJID AND BPQ.LAST_PART_OBJID = IM.PART_OBJID AND BPQ.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy') ) )::text QTY3
,(SELECT sum(NVL(PRE_BOOKING_QTY, '0')::NUMERIC) FROM SALES_BOM_REPORT_PART SBRP WHERE SBRP.PARENT_OBJID = PBR.OBJID AND SBRP.PART_OBJID = IM.PART_OBJID) AS PRE_BOOKING_QTY
,IMI.OUT_QTY
<!-- ,IMO.REQUEST_QTY
,IMO.OUT_QTY
,IMO.OUT_DATE
,IMO.ACQ_USER
,IMO.INVENTORY_REQUEST_MASTER_OBJID -->
FROM
INVENTORY_MGMT AS IM
LEFT OUTER JOIN INVENTORY_MGMT_IN IMI
ON IMI.PARENT_OBJID = IM.OBJID
<!-- AND IMI.RECEIPT_QTY != '0' -->
LEFT OUTER JOIN PART_BOM_REPORT PBR
ON PBR.CONTRACT_OBJID = IM.CONTRACT_OBJID
AND PBR.UNIT_CODE = IM.UNIT
) TBL
WHERE 1=1
AND OBJID IN
<foreach collection="checkArr" item="objkey" index="index" separator="," open="(" close=")">
#{objkey}
</foreach>
AND (COALESCE(USE_CNT, 0) != 0)
ORDER BY PART_NO
</select>
<select id="getPartQTYInfoList" parameterType="map" resultType="map">
SELECT
T.*
,DESIGN_QTY1::numeric * QTY1 <!-- * QTY2 --> * nvl(QTY3, '1')::numeric AS DESIGN_QTY
FROM
(SELECT
BPQ.BOM_REPORT_OBJID
,BPQ.QTY AS DESIGN_QTY1
,(SELECT MAX(NVL(BPQ.QTY, '0')::NUMERIC) AS QTY FROM BOM_PART_QTY BPQ WHERE BPQ.BOM_REPORT_OBJID = PBR.OBJID AND NVL(PARENT_PART_NO, '') = '') QTY1
<!-- ,(SELECT SUM(NVL(BPQ2.QTY, '0')::NUMERIC) AS QTY FROM BOM_PART_QTY BPQ2 WHERE BPQ2.BOM_REPORT_OBJID = PBR.OBJID
AND BPQ2.PARENT_OBJID = (SELECT MAX(BPQ.CHILD_OBJID) FROM BOM_PART_QTY BPQ WHERE BPQ.BOM_REPORT_OBJID = PBR.OBJID AND NVL(PARENT_PART_NO, '') = '') ) QTY2 -->
,(SELECT SUM(NVL(BPQ3.QTY, '0')::NUMERIC) AS QTY FROM BOM_PART_QTY BPQ3 WHERE BPQ3.BOM_REPORT_OBJID = PBR.OBJID
AND BPQ3.CHILD_OBJID = BPQ.PARENT_OBJID)::text QTY3
,PM.OBJID AS PART_OBJID
,PM.PART_NO
,PM.PART_NAME
,PBR.CONTRACT_OBJID
,(SELECT PROJECT_NO FROM PROJECT_MGMT P WHERE P.OBJID = PBR.CONTRACT_OBJID )
,(SELECT REQ_DEL_DATE FROM PROJECT_MGMT P WHERE P.OBJID = PBR.CONTRACT_OBJID )
,PBR.UNIT_CODE
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = PBR.UNIT_CODE) AS UNIT_NAME
,COALESCE((SELECT SUM(CASE WHEN (OUT_QTY IS NULL OR OUT_QTY ='') THEN 0
ELSE OUT_QTY::NUMERIC END)
FROM INVENTORY_MGMT_OUT AS O
,INVENTORY_MGMT AS S_IM
WHERE S_IM.PART_OBJID = PM.OBJID
AND O.PARENT_OBJID = S_IM.OBJID
AND O.CONTRACT_MGMT_OBJID = PBR.CONTRACT_OBJID
AND O.UNIT = PBR.UNIT_CODE
),0) as OUT_QTY
FROM
BOM_PART_QTY BPQ
LEFT OUTER JOIN PART_MNG PM
ON PM.OBJID = BPQ.PART_NO
LEFT OUTER JOIN PART_BOM_REPORT PBR
ON PBR.OBJID = BPQ.BOM_REPORT_OBJID
WHERE BPQ.LAST_PART_OBJID = #{PART_OBJID}
AND PBR.CONTRACT_OBJID = #{PROJECT_OBJID}
AND PBR.UNIT_CODE = #{UNIT_CODE}
AND BPQ.STATUS = 'deploy') T
</select>
<update id="saveInventoryRequest" parameterType="map">
INSERT INTO INVENTORY_MGMT_OUT
(
OBJID
,PARENT_OBJID
,REQUEST_QTY
<!-- ,OUT_QTY
,OUT_DATE -->
,WRITER
<!-- ,ACQ_USER -->
,REGDATE
,INVENTORY_REQUEST_MASTER_OBJID
,SIGN
,CONTRACT_MGMT_OBJID
,UNIT
)
VALUES
(
#{OBJID }
,#{PARENT_OBJID }
,#{REQUEST_QTY }
<!-- ,#{OUT_QTY }
,#{OUT_DATE } -->
,#{WRITER }
<!-- ,#{ACQ_USER } -->
,NOW()
,#{INVENTORY_REQUEST_MASTER_OBJID}
,#{SIGN}
,#{CONTRACT_MGMT_OBJID}
,#{UNIT}
) ON CONFLICT (OBJID) DO
UPDATE
SET
REQUEST_QTY = #{REQUEST_QTY}
,OUT_QTY = #{OUT_QTY}
,OUT_DATE = #{OUT_DATE}
,ACQ_USER = #{ACQ_USER}
,CONTRACT_MGMT_OBJID = #{CONTRACT_MGMT_OBJID}
,UNIT = #{UNIT}
</update>
<update id="mergeInventoryInInfo" parameterType="map">
UPDATE
INVENTORY_MGMT_IN
SET
OUT_OBJID = CASE WHEN OUT_OBJID IS NULL THEN #{OBJID}
ELSE OUT_OBJID || ',' || #{OBJID}
END,
REQUEST_QTY = CASE
WHEN REQUEST_QTY IS NULL OR REQUEST_QTY = '' THEN #{REQUEST_QTY}
ELSE (TRIM(REQUEST_QTY)::numeric + #{REQUEST_QTY}::numeric)::text
END
WHERE OBJID = #{IN_OBJID}
</update>
<update id="mergeInventoryInOutQtyInfo" parameterType="map">
UPDATE
INVENTORY_MGMT_IN
SET
OUT_QTY = CASE
WHEN OUT_QTY IS NULL OR OUT_QTY = '' THEN #{OUT_QTY}
ELSE (TRIM(OUT_QTY)::numeric + #{OUT_QTY}::numeric)::text
END
WHERE OBJID = #{IN_OBJID}
</update>
<update id="saveInventoryTransfer" parameterType="map">
INSERT INTO INVENTORY_MGMT_OUT
(
OBJID
,PARENT_OBJID
,REQUEST_QTY
<!-- ,OUT_QTY
,OUT_DATE -->
,WRITER
<!-- ,ACQ_USER -->
,REGDATE
,INVENTORY_REQUEST_MASTER_OBJID
,SIGN
)
VALUES
(
#{OBJID }
,#{PARENT_OBJID }
,#{REQUEST_QTY }
<!-- ,#{OUT_QTY }
,#{OUT_DATE } -->
,#{WRITER }
<!-- ,#{ACQ_USER } -->
,NOW()
,#{INVENTORY_REQUEST_MASTER_OBJID}
,#{SIGN}
) ON CONFLICT (OBJID) DO
UPDATE
SET
OUT_QTY = #{OUT_QTY}
,OUT_DATE = #{OUT_DATE}
,ACQ_USER = #{ACQ_USER}
,WRITER = #{WRITER}
</update>
<update id="savesignInventoryTransfer" parameterType="map">
INSERT INTO INVENTORY_MGMT_OUT
(
OBJID
,ACQ_USER
,SIGN
)
VALUES
(
#{OBJID}
,#{ACQ_USER}
,#{SIGN}
) ON CONFLICT (OBJID) DO
UPDATE
SET
ACQ_USER = #{ACQ_USER}
,SIGN = #{SIGN}
</update>
<update id="mergeInventoryRequestMasterInfo" parameterType="map">
INSERT INTO INVENTORY_MGMT_OUT_MASTER
(
OBJID
,PARENT_OBJID
,INVENTORY_OUT_NO
,REQUEST_DATE
,REQUEST_ID
<!-- ,RECEPTION_STATUS
,RECEPTION_ID
,RECEPTION_DATE
,OUTSTATUS -->
,WRITER
,REGDATE
,REMARK
,CONTRACT_MGMT_OBJID
)
VALUES
(
#{INVENTORY_REQUEST_MASTER_OBJID}
,#{PARENT_OBJID }
,(SELECT 'Rfw-'||TO_CHAR(NOW(),'YYYY')||'-'||(coalesce(MAX(case when SPLIT_PART( INVENTORY_OUT_NO, '-', 3) = '' or INVENTORY_OUT_NO is null then '0' else SPLIT_PART( INVENTORY_OUT_NO, '-', 3) end ::numeric ))::INTEGER + 1)::TEXT FROM INVENTORY_MGMT_OUT_MASTER)
<!-- ,(SELECT 'Rfw-'||TO_CHAR(NOW(),'YYYY')||'-'||LPAD((COALESCE(MAX(SUBSTR(INVENTORY_OUT_NO,10,12)),'0')::INTEGER+1)::TEXT,3,'0') FROM INVENTORY_MGMT_OUT_MASTER) -->
,#{REQUEST_DATE }
,#{WRITER }
<!-- ,#{RECEPTION_STATUS }
,#{RECEPTION_ID }
,#{RECEPTION_DATE }
,#{OUTSTATUS } -->
,#{WRITER }
,NOW()
,#{REMARK }
,#{CONTRACT_MGMT_OBJID }
) ON CONFLICT (OBJID) DO
UPDATE
SET
REMARK = #{REMARK }
</update>
<!-- 불출의뢰서 저장 시 저장된 파트 정보를 초기화 -->
<delete id="initInventoryRequestPart" parameterType="map">
DELETE FROM INVENTORY_MGMT_OUT WHERE INVENTORY_REQUEST_MASTER_OBJID = #{INVENTORY_REQUEST_MASTER_OBJID}
</delete>
<select id="getInventoryRequestMasterInfo" parameterType="map" resultType="map">
SELECT
*
,(SELECT PROJECT_NO FROM PROJECT_MGMT P WHERE P.OBJID = IM.CONTRACT_MGMT_OBJID )
FROM
INVENTORY_MGMT_OUT_MASTER IM
WHERE 1=1
AND OBJID = #{INVENTORY_REQUEST_MASTER_OBJID}
</select>
<!-- 자재불출의뢰서 목록을 가져온다. -->
<select id="materialRequesrGridtList" parameterType="map" resultType="map">
SELECT
IM.*
FROM(
SELECT
ROW_NUMBER() OVER(ORDER BY INVENTORY_OUT_NO DESC) AS RNUM,
OBJID
,(SELECT STRING_AGG(PART_NO,',') FROM PART_MNG AS O WHERE O.OBJID IN (SELECT PART_OBJID FROM INVENTORY_MGMT AS O1 WHERE O1.OBJID IN (SELECT PARENT_OBJID FROM INVENTORY_MGMT_OUT AS O WHERE O.INVENTORY_REQUEST_MASTER_OBJID= IM.OBJID))) AS PART_NO_ARR
,(SELECT STRING_AGG(PART_NAME,',') FROM PART_MNG AS O WHERE O.OBJID IN (SELECT PART_OBJID FROM INVENTORY_MGMT AS O1 WHERE O1.OBJID IN (SELECT PARENT_OBJID FROM INVENTORY_MGMT_OUT AS O WHERE O.INVENTORY_REQUEST_MASTER_OBJID= IM.OBJID))) AS PART_NAME_ARR
,PARENT_OBJID
,INVENTORY_OUT_NO
,REQUEST_DATE
,REQUEST_ID
,RECEPTION_STATUS
,CASE WHEN RECEPTION_STATUS = 'reception' THEN '접수'
ELSE '미접수'
END RECEPTION_STATUS_TITLE
,RECEPTION_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.RECEPTION_ID) AS RECEPTION_USER_NAME
,RECEPTION_DATE
,OUTSTATUS
,CASE WHEN OUTSTATUS = 'complete' THEN '완료'
ELSE '미완료'
END OUTSTATUS_TITLE
,WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = IM.WRITER) AS REQUEST_USER_NAME
,REGDATE
,TO_CHAR(IM.REGDATE,'YYYY-MM-DD') AS REG_DATE
,IMO.REQUEST_QTY
,IMO.OUT_QTY
,IMO.INVENTORY_REQUEST_MASTER_OBJID
FROM
INVENTORY_MGMT_OUT_MASTER AS IM
LEFT OUTER JOIN (
SELECT
INVENTORY_REQUEST_MASTER_OBJID
,SUM(coalesce(REQUEST_QTY::NUMERIC, 0)) AS REQUEST_QTY
,SUM(coalesce(OUT_QTY::NUMERIC, 0)) AS OUT_QTY
FROM
INVENTORY_MGMT_OUT
GROUP BY INVENTORY_REQUEST_MASTER_OBJID
) AS IMO
ON IMO.INVENTORY_REQUEST_MASTER_OBJID = IM.OBJID
WHERE 1=1
<if test="Year != null and Year !=''">
AND IM.REGDATE = #{Year}
</if>
<if test="project_no != null and project_no != ''">
AND IM.CONTRACT_OBJID = #{project_no}
</if>
<if test="unit_code != null and unit_code != ''">
AND IM.UNIT = #{unit_code}
</if>
<!--
<if test="part_no != null and part_no != ''">
AND UPPER(P.PART_NO) LIKE UPPER('%${part_no}%')
</if>
<if test="part_name != null and part_name != ''">
AND UPPER(P.PART_NAME) LIKE UPPER('%${part_name}%')
</if>
-->
<if test="spec != null and spec != ''">
AND UPPER(P.SPEC) LIKE UPPER('%${spec}%')
</if>
<if test="cls_cd != null and cls_cd != ''">
AND IM.CLS_CD = #{cls_cd}
</if>
<if test="cau_cd != null and cau_cd != ''">
AND IM.CAU_CD = #{cau_cd}
</if>
<if test="location != null and location != ''">
AND IM.LOCATION = #{location}
</if>
<if test="writer != null and writer != ''">
AND IM.WRITER = #{writer}
</if>
<if test="request_user != null and request_user != ''">
AND IM.WRITER = #{request_user}
</if>
<if test="reception_user != null and reception_user != ''">
AND IM.RECEPTION_ID = #{reception_user}
</if>
<if test="reception_status != null and reception_status != ''">
AND IM.RECEPTION_STATUS = #{reception_status}
</if>
<if test="out_status != null and out_status != ''">
AND (CASE WHEN OUTSTATUS = 'complete' THEN 'complete' ELSE 'NG' END) = #{out_status}
<!-- AND OUTSTATUS = #{out_status} -->
</if>
<if test="request_start_date !=null and request_start_date != '' ">
AND TO_DATE(IM.REQUEST_DATE ,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{request_start_date}, 'YYYY-MM-DD')
</if>
<if test="request_end_date !=null and request_end_date != '' ">
AND TO_DATE(IM.REQUEST_DATE ,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{request_end_date}, 'YYYY-MM-DD')
</if>
<if test="reception_start_date !=null and reception_start_date != '' ">
AND TO_DATE(IM.RECEPTION_DATE ,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{reception_start_date}, 'YYYY-MM-DD')
</if>
<if test="reception_end_date !=null and reception_end_date != '' ">
AND TO_DATE(IM.RECEPTION_DATE ,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{reception_end_date}, 'YYYY-MM-DD')
</if>
) IM
WHERE 1=1
<if test="part_no != null and part_no != ''">
AND UPPER(PART_NO_ARR) LIKE '%'||TRIM(UPPER(#{part_no}))||'%'
</if>
<if test="part_name != null and part_name != ''">
AND UPPER(PART_NAME_ARR) LIKE '%'||TRIM(UPPER(#{part_name}))||'%'
</if>
ORDER BY REGDATE DESC
</select>
<update id="mergeReceiptInventoryRequestInfo" parameterType="map">
UPDATE
INVENTORY_MGMT_OUT_MASTER
SET
RECEPTION_STATUS = #{RECEPTION_STATUS}
,RECEPTION_DATE = #{RECEPTION_DATE}
,RECEPTION_ID = #{RECEPTION_ID}
WHERE OBJID = #{OBJID}
</update>
<select id="materialRequestDetailPopUpsign" parameterType="map" resultType="map">
SELECT
OBJID
,ACQ_USER
,SIGN
FROM
INVENTORY_MGMT_OUT
WHERE OBJID = #{OBJID}
</select>
<update id="materialRequestDetailPopUpsigndelete" parameterType="map">
INSERT INTO INVENTORY_MGMT_OUT
(
OBJID
,SIGN
)
VALUES
(
#{OBJID}
,#{SIGN}
) ON CONFLICT (OBJID) DO
UPDATE
SET
SIGN = #{SIGN}
</update>
<!-- 재고관리 목록을 가져온다. -->
<select id="getInventoryMngRequestDetailList" parameterType="map" resultType="map">
SELECT
*
,(SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE PM.OBJID = IMO.CONTRACT_MGMT_OBJID) PROJECT_NO
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = IMO.UNIT) AS UNIT_NAME
,(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NO
,(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_NAME
,(SELECT SPEC FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS SPEC
,(SELECT MAKER FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS MAKER
,(SELECT CODE_NAME(PART_TYPE) FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_TYPE_NAME
,(SELECT PART_TYPE FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS PART_TYPE
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = COALESCE(NULLIF(IMI.LOCATION, ''), IM.LOCATION)) AS LOCATION_NAME
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = COALESCE(NULLIF(IMI.SUB_LOCATION, ''), IM.SUB_LOCATION)) AS SUB_LOCATION_NAME
,(SELECT MATERIAL FROM PART_MNG AS O WHERE O.OBJID::VARCHAR = IM.PART_OBJID) AS MATERIAL
<!-- , IMO.SIGN -->
,(SELECT SIGN FROM INVENTORY_MGMT_OUT_MASTER AS O WHERE O.OBJID = IMO.INVENTORY_REQUEST_MASTER_OBJID) AS SIGN
,(SELECT USER_NAME(WRITER) FROM INVENTORY_MGMT_IN IMI WHERE IMI.PARENT_OBJID = IMO.PARENT_OBJID ORDER BY REGDATE DESC LIMIT 1) AS RECEIVER_NAME
,IMO.CONTRACT_MGMT_OBJID
,USER_NAME(IMO.ACQ_user) AS ACQ_USER_NAME
<!-- ,USER_NAME(IM.WRITER) AS RECEIVER_NAME -->
,IMI.OBJID AS IN_OBJID
FROM
INVENTORY_MGMT_OUT IMO
LEFT OUTER JOIN INVENTORY_MGMT IM
ON IM.OBJID = IMO.PARENT_OBJID
LEFT OUTER JOIN INVENTORY_MGMT_IN IMI
<!-- ON IMI.OUT_OBJID = IMO.OBJID -->
ON IMO.OBJID = ANY(STRING_TO_ARRAY(IMI.OUT_OBJID, ','))
WHERE IMO.INVENTORY_REQUEST_MASTER_OBJID = #{INVENTORY_REQUEST_MASTER_OBJID}
</select>
<!-- 불출이력을 가져온다 -->
<select id="getInventoryRequestHistoryList" parameterType="map" resultType="map">
SELECT
(SELECT MAX(PARENT_OBJID) FROM ARRIVAL_PLAN AS O WHERE O.PART_OBJID = (SELECT PART_OBJID FROM INVENTORY_MGMT AS O1 WHERE O1.OBJID = T.PARENT_OBJID)) AS OBJID
,(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID = (SELECT PART_OBJID FROM INVENTORY_MGMT AS O1 WHERE O1.OBJID = T.PARENT_OBJID)) AS PART_NO
,(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID = (SELECT PART_OBJID FROM INVENTORY_MGMT AS O1 WHERE O1.OBJID = T.PARENT_OBJID)) AS PART_NAME
,'입고' AS GUBUN
,T.RECEIPT_QTY
,CODE_NAME(LOCATION) LOCATION_NAME
,CODE_NAME(SUB_LOCATION) SUB_LOCATION_NAME
,(SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE PM.OBJID = T.CONTRACT_MGMT_OBJID) PROJECT_NO
FROM INVENTORY_MGMT_IN T
WHERE T.PARENT_OBJID=#{objId}
AND MOVE_DATE IS NULL OR MOVE_DATE = ''
UNION ALL
SELECT
T2.OBJID
,(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID = (SELECT PART_OBJID FROM INVENTORY_MGMT AS O1 WHERE O1.OBJID = T.PARENT_OBJID)) AS PART_NO
,(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID = (SELECT PART_OBJID FROM INVENTORY_MGMT AS O1 WHERE O1.OBJID = T.PARENT_OBJID)) AS PART_NAME
,'출고' AS GUBUN
,T.OUT_QTY
,CODE_NAME(T1.LOCATION) LOCATION_NAME
,CODE_NAME(T1.SUB_LOCATION) SUB_LOCATION_NAME
,(SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE PM.OBJID = T.CONTRACT_MGMT_OBJID) PROJECT_NO
FROM INVENTORY_MGMT_OUT AS T
LEFT JOIN INVENTORY_MGMT AS T1
ON T.PARENT_OBJID = T1.OBJID
LEFT JOIN INVENTORY_MGMT_OUT_MASTER AS T2
ON T.INVENTORY_REQUEST_MASTER_OBJID = T2.OBJID
WHERE T.PARENT_OBJID=#{objId}
UNION ALL
SELECT
(SELECT MAX(PARENT_OBJID) FROM ARRIVAL_PLAN AS O WHERE O.PART_OBJID = (SELECT PART_OBJID FROM INVENTORY_MGMT AS O1 WHERE O1.OBJID = T.PARENT_OBJID)) AS OBJID
,(SELECT PART_NO FROM PART_MNG AS O WHERE O.OBJID = (SELECT PART_OBJID FROM INVENTORY_MGMT AS O1 WHERE O1.OBJID = T.PARENT_OBJID)) AS PART_NO
,(SELECT PART_NAME FROM PART_MNG AS O WHERE O.OBJID = (SELECT PART_OBJID FROM INVENTORY_MGMT AS O1 WHERE O1.OBJID = T.PARENT_OBJID)) AS PART_NAME
,'이동' AS GUBUN
,T.RECEIPT_QTY
,CODE_NAME(LOCATION) LOCATION_NAME
,CODE_NAME(SUB_LOCATION) SUB_LOCATION_NAME
,(SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE PM.OBJID = T.CONTRACT_MGMT_OBJID) PROJECT_NO
FROM INVENTORY_MGMT_IN T
WHERE T.PARENT_OBJID=#{objId}
AND MOVE_DATE IS NOT NULL AND MOVE_DATE != ''
</select>
<update id="mergeAcceptInventoryRequestInfo" parameterType="map">
UPDATE
INVENTORY_MGMT_OUT_MASTER
SET
OUTSTATUS = #{OUTSTATUS}
,REQUEST_DATE = #{REQUEST_DATE}
WHERE OBJID = #{OBJID}
</update>
<update id="mergeAcceptInventoryRequestPartInfo" parameterType="map">
UPDATE
INVENTORY_MGMT_OUT
SET
OUT_DATE = #{REQUEST_DATE}
WHERE INVENTORY_REQUEST_MASTER_OBJID = #{OBJID}
</update>
<update id="mergeInventoryMoveInfo" parameterType="map">
UPDATE
INVENTORY_MGMT_IN
SET
MOVE_OBJID = #{OBJID}
,MOVE_QTY = #{SUM_MOVE_QTY}
WHERE OBJID = #{MOVE_OBJID}
</update>
<update id="saveInventoryMoveInInfo" parameterType="map">
INSERT INTO INVENTORY_MGMT_IN (
OBJID
,PARENT_OBJID
,RECEIPT_QTY
,LOCATION
,SUB_LOCATION
,WRITER
,REGDATE
,PURCHASE_ORDER_MASTER_OBJID
,CONTRACT_MGMT_OBJID
,PURCHASE_ORDER_SUB_OBJID
,MOVE_DATE
,MOVE_USER
)
(
SELECT
#{OBJID}
,PARENT_OBJID
,#{MOVE_QTY}
,#{LOCATION}
,#{SUB_LOCATION}
,#{WRITER}
,now()
,PURCHASE_ORDER_MASTER_OBJID
,CONTRACT_MGMT_OBJID
,PURCHASE_ORDER_SUB_OBJID
,#{MOVE_DATE}
,#{MOVE_USER}
FROM INVENTORY_MGMT_IN
WHERE MOVE_OBJID = #{OBJID}
)
</update>
<select id="getInventoryMoveInfo" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
OBJID,
MOVE_QTY
FROM INVENTORY_MGMT_IN
WHERE OBJID = #{MOVE_OBJID}
</select>
</mapper>