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

369 lines
14 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">
<!--
/**
* 거래명세서
* @since 2021.11.25
* @author min
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.11.25 민상익 최초작성
**/
-->
<mapper namespace="tradingStatement">
<!--
/**
* TEMP 테이블 삭제
* @since 2021.11.25
* @author min
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.11.25 민상익 최초작성
**/
-->
<delete id="deleteTemp1" parameterType="map">
/* tradingStatement.deleteTemp1 */
DELETE FROM TEMP1
</delete>
<!--
/**
* TEMP 테이블 인써트
* 미착재고테이블의 잔량이 0 이상인 데이터
*
* @since 2021.11.25
* @author min
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.11.25 민상익 최초작성
**/
-->
<update id="insertTemp1" parameterType="map">
/* tradingStatement.insertTemp1 */
INSERT INTO TEMP1
(
SELECT A.OdOrderNo, /* 발주번호*/
A.ImItemId, /* 품번 */
RmDueDt, /* 납기예정일자 */
RmOrderQty, /* 발주수량*/
RmRcptQty, /* 입고수량*/
RmRemQty, /* 잔량 */
SuVndCd, /* 업체코드*/
'', /* 기종코드*/
RcArrvDt, /* 입고예정일*/
RcArrvDt1, /* 입고예정일*/
RcArrvDt2, /* 입고예정일*/
RcArrvDt3 /* 입고예정일*/
FROM SWPC400A_TBL A
WHERE 1=1
and RmRemQty > 0
<if test="condSuVndCd != null and condSuVndCd != '' ">
AND SuVndCd = #{condSuVndCd} /* 업체코드*/
</if>
<if test="condDivision != null and condDivision != '' ">
AND substring(A.OdOrderNo,2,2) = #{condDivision} /* 사업부 */
</if>
)
</update>
<!--
/**
* TEMP 조회
* @since 2021.11.25
* @author min
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.11.25 민상익 최초작성
**/
-->
<select id="selectTemp1" parameterType="map" resultType="map">
/* tradingStatement.selectTemp1 */
SELECT * FROM TEMP1
</select>
<!--
/**
* TEMP 조회 한것을 한건씩 구매의뢰 테이블에서 PuLotNo의 prodCd 가져옴
* @since 2021.11.25
* @author min
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.11.25 민상익 최초작성
**/
-->
<select id="getProdCd" parameterType="map" resultType="map">
/* tradingStatement.getProdCd */
SELECT substring(PuLotNo,4,8) AS prodCd /* 기종코드 */
FROM SWPB630A_TBL
WHERE PuReqstNo in ( SELECT A.PuReqstNo
FROM SWPB631A_TBL A, ( SELECT PuReqstNo, /* 구매의뢰번호 */
ImItemId /* 품번 */
FROM SWPC361A_TBL
WHERE OdOrderNo = #{t_odOrderNo} /* 발주번호 */
AND ImItemId = #{t_imItemId}) B /* 품번 */
WHERE A.PuReqstNo = B.PuReqstNo
AND A.ImItemId = B.ImItemId )
</select>
<!--
/**
* TEMP1 업데이트
* @since 2021.11.25
* @author min
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.11.25 민상익 최초작성
**/
-->
<update id="updateTemp1" parameterType="map">
/* tradingStatement.updateTemp1 */
UPDATE TEMP1 SET
T_ProdCd = #{t_prodCd} /* 기종코드 */
WHERE T_OdOrderNo = #{t_odOrderNo} /* 발주번호 */
AND T_ImItemId = #{t_imItemId} /* 품번 */
</update>
<!--
/**
* 완성된 TEMP1 조회
* @since 2021.11.25
* @author min
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.11.25 민상익 최초작성
**/
-->
<select id="getTemp1List" parameterType="map" resultType="map">
/* tradingStatement.getTemp1List */
SELECT A.T_ProdCd ProdCd,
(SELECT ImItemNm FROM SWPA100A_TBL WHERE ImItemId = A.T_ProdCd) ProdNm, /* 기종 */
A.T_odOrderNo odOrderNo, /* 발주번호 */
A.T_ImItemId ImItemId, /* 품번 */
(SELECT ImItemNo FROM SWPA100A_TBL WHERE ImItemId = A.T_ImItemId) ImItemNo,
(SELECT ImItemNm FROM SWPA100A_TBL WHERE ImItemId = A.T_ImItemId) ImItemNm, /* 품명 */
(SELECT ImItemSpec FROM SWPA100A_TBL WHERE ImItemId = A.T_ImItemId) ImItemSpec, /* 규격 */
(SELECT ImMaterial FROM SWPA100A_TBL WHERE ImItemId = A.T_ImItemId) ImMaterial, /* ㅈㅐ질 */
(SELECT ImUnit FROM SWPA100A_TBL WHERE ImItemId = A.T_ImItemId) ImUnit, /* 단위 */
A.T_RmDueDt RmDueDt, /* 납기예정일자 */
A.T_RmOrderQty RmOrderQty, /* 발주수량 */
A.T_RmRcptQty RmRcptQty, /* 입고수량 */
A.T_RmRemQty RmRemQty, /* 잔량 */
(B.IsQty) As IsQty, /* 발행수량 */
(B.PoorQty) As PoorQty, /* 불량수량 */
(B.LackQty) As LackQty, /* 부족수량 */
CAST(NULL AS smallint) OiDeliveryQty, /* 납품수량 */
/* master.dbo.FnPrice(A.T_SuVndCd,A.T_ImItemId,'99999999') FnPrice, 단가 */
A.T_RcArrvDt IsDt, /* 납기일자 */
A.T_RcArrvDt1 As RcArrvDt1, /* 입고예정일*/
A.T_RcArrvDt2 As RcArrvDt2, /* 입고예정일*/
A.T_RcArrvDt3 As RcArrvDt3 /* 입고예정일*/
FROM TEMP1 A
LEFT OUTER JOIN (SELECT OdOrderNo, ImItemId, SUM(IsQty) IsQty, SUM(PoorQty) PoorQty, SUM(LackQty) LackQty FROM NSWOS100_TBL C
WHERE 1=1
<if test="condSuVndCd != null and condSuVndCd != '' ">
AND C.SuVndCd = #{condSuVndCd} /* 업체코드*/
</if>
<if test="condDivision != null and condDivision != '' ">
AND substring(C.OdOrderNo,2,2) = #{condDivision} /* 사업부 */
</if>
GROUP BY OdOrderNo, ImItemId) As B
ON SUBSTRING(A.T_OdOrderNo,2,14) = B.OdOrderNo AND A.T_ImItemId = B.ImItemId
ORDER BY OdOrderNo, RmDueDt, ImItemId
</select>
<!--
/**
* 거래명세서관리 테이블에 저장
* @since 2021.11.01
* @author min
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.11.26 민상익 최초작성
**/
-->
<update id="saveTradingState" parameterType="map">
/* tradingStatement.saveTradingState */
INSERT INTO NSWOS100_TBL (
SuVndCd /* 업체코드 */
,IssueDt /* 작성일자 */
,IssueNo /* 거래명세서번호 */
,IsNo /* 순번 */
,ProdCd /* 기종코드 */
,OdOrderNo /* 발주번호 */
,ImItemId /* 품번 */
,RmDueDt /* 납기일자 */
,RmOrderQty /* 발주수량 */
,RmRcptQty /* 입고처리수량 */
,RmRemQty /* 잔량 */
,IsDt /* 납기일자 */
,IsQty /* 납품수량 */
,IsPrice /* 납품단가 */
,IsAmount /* 납품금액 */
,RcRcptNo /* */
,RiSeqNo /* */
,PoorQty /* 불량수량 */
,LackQty /* 부족수량 */
,RiRcptQty /* */
,GuBun /* */
,FgPrice /* */
,FgAmount /* */
,FgCost /* */
,FgOrderNo /* */
,FgCurrency /* */
,InGB /* */
) VALUES (
#{suVndCd} /* 업체코드 */
,#{issueDt} /* 작성일자 */
,#{issueNo}::integer /* 거래명세서번호 */
,#{isNo}::integer /* 순번 */
,#{prodCd} /* 기종코드 */
,#{odOrderNo} /* 발주번호 */
,#{imItemId} /* 품번 */
,#{rmDueDt} /* 납기일자 */
,#{rmOrderQty}::integer /* 발주수량 */
,#{rmRcptQty}::integer /* 입고처리수량 */
,#{rmRemQty}::integer /* 잔량 */
,#{isDt} /* 납기일자 */
,#{isQty}::integer /* 납품수량 */
,#{isPrice}::numeric /* 납품단가 */
,#{isAmount}::numeric /* 납품금액 */
,#{rcRcptNo} /* */
,#{riSeqNo} /* */
,#{poorQty}::integer /* 불량수량 */
,#{lackQty}::integer /* 부족수량 */
,#{riRcptQty}::integer /* */
,#{guBun} /* */
,#{fgPrice}::numeric /* */
,#{fgAmount}::numeric /* */
,#{fgCost}::numeric /* */
,#{fgOrderNo} /* */
,#{fgCurrency} /* */
,#{inGB} /* */
) ON CONFLICT (SuVndCd,IssueDt,IssueNo,IsNo ) DO /* 업체코드,작성일자,거래명세서번호,순번 */
UPDATE SET
ProdCd = #{prodCd} /* 기종코드 */
,OdOrderNo = #{odOrderNo} /* 발주번호 */
,ImItemId = #{imItemId} /* 품번 */
,RmDueDt = #{rmDueDt} /* 납기일자 */
,RmOrderQty = #{rmOrderQty}::integer /* 발주수량 */
,RmRcptQty = #{rmRcptQty}::integer /* 입고처리수량 */
,RmRemQty = #{rmRemQty}::integer /* 잔량 */
,IsDt = #{isDt} /* 납기일자 */
,IsQty = #{isQty}::integer /* 납품수량 */
,IsPrice = #{isPrice}::numeric /* 납품단가 */
,IsAmount = #{isAmount}::numeric /* 납품금액 */
,RcRcptNo = #{rcRcptNo} /* */
,RiSeqNo = #{riSeqNo} /* */
,PoorQty = #{poorQty}::integer /* 불량수량 */
,LackQty = #{lackQty}::integer /* 부족수량 */
,RiRcptQty = #{riRcptQty}::integer /* */
,GuBun = #{guBun} /* */
,FgPrice = #{fgPrice}::numeric /* */
,FgAmount = #{fgAmount}::numeric /* */
,FgCost = #{fgCost}::numeric /* */
,FgOrderNo = #{fgOrderNo} /* */
,FgCurrency = #{fgCurrency} /* */
,InGB = #{inGB} /* */
</update>
<!--
/**
* 거래명세서번호 IssueNo 생성
* @since 2021.11.26
* @author min
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.11.26 민상익 최초작성
**/
-->
<select id="getIssueNo" parameterType="map" resultType="int">
/* tradingStatement.getIssueNo */
SELECT COALESCE(MAX(IssueNo)::INTEGER, 0) + 1
FROM NSWOS100_TBL
WHERE SuVndCd = #{suVndCd} /* 업체코드 */
and IssueDt = #{issueDt} /* 발행일 */
</select>
<!--
/**
* 순번 IsNo 생성
* @since 2021.11.26
* @author min
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.11.26 민상익 최초작성
**/
-->
<select id="getIsNo" parameterType="map" resultType="int">
/* tradingStatement.getIsNo */
SELECT COALESCE(MAX(IsNo)::INTEGER, 0) + 1
FROM NSWOS100_TBL
WHERE 0=0
AND SuVndCd = #{suVndCd} /* 업체코드 */
AND IssueDt = #{issueDt} /* 발행일 */
AND IssueNo = #{issueNo} /* 거래명세서번호*/
</select>
</mapper>