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

541 lines
22 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.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<mapper namespace="salesmgmt.inout">
<!--
/**
* 제품입고/출하/출고 목록 조회
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<select id="getInOutList" parameterType="map" resultType="map">
/* salesmgmt.inout.getInOutList */
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY A.CRET_DATE) AS RNUM
, A.*
, (SELECT GoodsNm FROM SWSB110A_TBL WHERE GoodsCd = A.goodsCd) AS goodsNm /* 제품명 */
, (SELECT GoodsSpec FROM SWSB110A_TBL WHERE GoodsCd = A.goodsCd) AS goodsSpec /* 제품규격 */
, (SELECT GoodsUnit FROM SWSB110A_TBL WHERE GoodsCd = A.goodsCd) AS goodsUnit /* 제퓸단위 */
, CASE WHEN A.c_class is not NULL then
CONCAT(
(SELECT ltrim(rtrim(DTL_NM)) from SWSA999A_TBL where COMM_CD = 'S110' AND SUBSTRING(DTL_CD,1,1) = SUBSTRING(A.c_class,1,1)),
'-',
(SELECT ltrim(rtrim(DTL_NM)) from SWSA999A_TBL where COMM_CD = 'S120' AND SUBSTRING(DTL_CD,1,3) = SUBSTRING(A.c_class,1,3)),
'-',
(SELECT ltrim(rtrim(DTL_NM)) from SWSA999A_TBL where COMM_CD = 'S130' AND DTL_CD = A.c_class )
)
ELSE '' END AS c_classNm /* 제품그룹명 */
, CASE WHEN A.DeliveryType IN ('01','20') THEN (SELECT LongNm FROM SWHI021A_TBL WHERE DeptCd = A.OutPlace)
ELSE (SELECT CustNm FROM SWSB011A_TBL WHERE CustCd = A.OutPlace)
END AS outPlaceNm /* 출고처명 */
, CASE WHEN A.DeliveryType IN ('11', '21') THEN (SELECT CustNm FROM SWSB210A_TBL WHERE CustCd = A.InPlace)
ELSE (SELECT CustNm FROM SWSB011A_TBL WHERE CustCd = A.InPlace)
END AS inPlaceNm /* 입고처명 */
, (SELECT CustNm FROM SWSB011A_TBL WHERE CustCd = A.UpperAreaCd) AS upperAreaNm /* 장착지명 */
, (SELECT AreaName FROM SWJA050A_TBL WHERE CONCAT(AreaA,AreaB,AreaC,AreaD) = A.AreaCd) AS areaNm /* AS지역명 */
, (SELECT LongNm FROM SWHI021A_TBL WHERE DeptCd = A.JiSaCd) AS JiSaNm /* 담당지사명 */
, (SELECT dept_name FROM DEPT_INFO WHERE dept_code = A.deptCd) AS deptNm /* 입력부서명 */
, (SELECT user_name FROM USER_INFO WHERE user_id = A.workPerson) AS workPersonNm /* 입력자명 */
, B.orderYm /* 계약년월 */
, B.orderSer /* 일련번호 */
, C.adrs AS custAdrs /* 고객주소 */
FROM SWSF010A_TBL A
LEFT OUTER JOIN SWSC110A_TBL B
ON A.orderNo = B.orderNo /* 계약번호 */
LEFT OUTER JOIN SWSB210A_TBL C
ON B.CustCd = C.CustCd /* 고객코드 */
WHERE A.deliveryType IN (${deliveryType}) /* 입고구분 */
<if test="condAcntUnit != null and condAcntUnit != '' ">
AND A.acntUnit = #{condAcntUnit} /* 사업부 */
</if>
<if test="Year != null and Year != '' ">
AND A.prcsYmd = CONCAT(#{Year}, #{Month}) /* 입고년월 */
</if>
) T
WHERE 1=1
<if test="PAGE_END != null and PAGE_END != ''">
<![CDATA[ AND RNUM <= #{PAGE_END}::integer ]]>
</if>
<if test="PAGE_START != null and PAGE_START != ''">
<![CDATA[ AND RNUM >= #{PAGE_START}::integer ]]>
</if>
</select>
<!--
/**
* 제품입고/출하/출고 로우카운트 조회
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<select id="getInOutListCnt" parameterType="map" resultType="map">
/* salesmgmt.inout.getInOutListCnt */
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 *
FROM SWSF010A_TBL A
LEFT OUTER JOIN SWSC110A_TBL B
ON A.orderNo = B.orderNo /* 계약번호 */
LEFT OUTER JOIN SWSB210A_TBL C
ON B.CustCd = C.CustCd /* 고객코드 */
WHERE A.deliveryType IN (${deliveryType}) /* 입고구분 */
<if test="condAcntUnit != null and condAcntUnit != '' ">
AND A.acntUnit = #{condAcntUnit} /* 사업부 */
</if>
<if test="Year != null and Year != '' ">
AND A.prcsYmd = CONCAT(#{Year}, #{Month}) /* 입고년월 */
</if>
) T
) T
</select>
<!--
/**
* 제품입고/출하/출고 조회
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<select id="getInOut" parameterType="map" resultType="map">
/* salesmgmt.inout.getInOut */
SELECT A.*
, (SELECT CdNm FROM SWSA050A_TBL WHERE MajorCd = 'AI' AND MinorCd = A.DeliveryType) AS deliveryTypeNm /* 입고구분명 */
, (SELECT GoodsYN FROM SWSC110A_TBL WHERE OrderNo = A.OrderNo) AS GoodsYN
, (SELECT GoodsNm FROM SWSB110A_TBL WHERE GoodsCd = A.GoodsCd) AS GoodsNm
, (SELECT GoodsSpec FROM SWSB110A_TBL WHERE GoodsCd = A.GoodsCd) AS GoodsSpec
, (SELECT GoodsUnit FROM SWSB110A_TBL WHERE GoodsCd = A.GoodsCd) AS GoodsUnit
, CASE WHEN A.c_class is not NULL then
CONCAT(
(SELECT ltrim(rtrim(DTL_NM)) from SWSA999A_TBL where COMM_CD = 'S110' AND SUBSTRING(DTL_CD,1,1) = SUBSTRING(A.c_class,1,1)),
'-',
(SELECT ltrim(rtrim(DTL_NM)) from SWSA999A_TBL where COMM_CD = 'S120' AND SUBSTRING(DTL_CD,1,3) = SUBSTRING(A.c_class,1,3)),
'-',
(SELECT ltrim(rtrim(DTL_NM)) from SWSA999A_TBL where COMM_CD = 'S130' AND DTL_CD = A.c_class )
)
ELSE '' END AS c_classNm /* 제품그룹명 */
, CASE WHEN A.DeliveryType IN ('01','20') THEN (SELECT LongNm FROM SWHI021A_TBL WHERE DeptCd = A.OutPlace)
ELSE (SELECT CustNm FROM SWSB011A_TBL WHERE CustCd = A.OutPlace)
END AS outPlaceNm /* 출고처명 */
, CASE WHEN A.DeliveryType IN ('11', '21') THEN (SELECT CustNm FROM SWSB210A_TBL WHERE CustCd = A.InPlace)
ELSE (SELECT CustNm FROM SWSB011A_TBL WHERE CustCd = A.InPlace)
END AS inPlaceNm /* 입고처명 */
, (SELECT CustNm FROM SWSB011A_TBL WHERE CustCd = A.UpperAreaCd) AS upperAreaNm /* 장착지명 */
, (SELECT AreaName FROM SWJA050A_TBL WHERE CONCAT(AreaA,AreaB,AreaC,AreaD) = A.AreaCd) AS areaNm /* AS지역명 */
, (SELECT LongNm FROM SWHI021A_TBL WHERE DeptCd = A.JiSaCd) AS JiSaNm /* 담당지사명 */
, (SELECT dept_name FROM DEPT_INFO WHERE dept_code = A.deptCd) AS deptNm /* 입력부서명 */
, (SELECT user_name FROM USER_INFO WHERE user_id = A.workPerson) AS workPersonNm /* 입력자명 */
, C.adrs AS custAdrs /* 고객주소 */
FROM SWSF010A_TBL A
LEFT OUTER JOIN SWSC110A_TBL B
ON A.orderNo = B.orderNo /* 계약번호 */
LEFT OUTER JOIN SWSB210A_TBL C
ON B.CustCd = C.CustCd /* 고객코드 */
WHERE A.inOutNo = #{inOutNo} /* 입고번호 */
</select>
<!--
/**
* 제품입고/출하/출고 일련번호 조회
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<select id="getInOutOrderSer" parameterType="map" resultType="int">
/* salesmgmt.inout.getInOutOrderSer */
SELECT COALESCE(MAX(ser)::INTEGER, 0) + 1
FROM SWSF010A_TBL
WHERE acntUnit = #{acntUnit} /* 사업부 */
AND prcsYmd = #{prcsYmd} /* 입고년월 */
</select>
<!--
/**
* 계약일련번호 목록 조회
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<select id="getSerialList" parameterType="map" resultType="map">
/* salesmgmt.inout.getSerialList */
SELECT serial AS code /* 일련번호 */
, serial AS name /* 일련번호 */
FROM SWSC111A_TBL A
WHERE orderNo = #{orderNo} /* 계약번호 */
</select>
<!--
/**
* 주어진 계약번호에 맞는 납기예정 목록 조회
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<select id="getDeliveryList" parameterType="map" resultType="map">
/* salesmgmt.inout.getDeliveryList */
SELECT orderNo /* 계악번호 */
, serial /* 일련번호 */
, goodsQty /* 수량 */
, COALESCE(TO_DATE(deliveryDate, 'yyyyMMdd'):: VARCHAR, '') AS deliveryDate/* 납기예정일 */
, COALESCE(TO_DATE(napPumDate, 'yyyyMMdd'):: VARCHAR, '') as napPumDate /* 납품일 */
, COALESCE(TO_DATE(addDate, 'yyyyMMdd'):: VARCHAR, '') AS addDate /* 장착예정일 */
, COALESCE(TO_DATE(yetOutDate, 'yyyyMMdd'):: VARCHAR, '') as yetOutDate /* 출하 예정일 */
, COALESCE(TO_DATE(outDate, 'yyyyMMdd'):: VARCHAR, '') as outDate /* 출하 출하일 */
, COALESCE(outNo, '') as outNo /* 출하 출하번호 */
, COALESCE(TO_DATE(yetOutDate1, 'yyyyMMdd'):: VARCHAR, '') as yetOutDate1 /* 출고 예정일 */
, COALESCE(TO_DATE(outDate1, 'yyyyMMdd'):: VARCHAR, '') as outDate1 /* 출고 출고일 */
, COALESCE(outNo1, '') as outNo1 /* 츌고 출고번호 */
, COALESCE(TO_DATE(yetSaleDate, 'yyyyMMdd'):: VARCHAR, '') as yetSaleDate /* 매출 예정일 */
, COALESCE(TO_DATE(saleDate, 'yyyyMMdd'):: VARCHAR, '') as saleDate /* 매출 매출일 */
, COALESCE(saleNo, '') as saleNo /* 매출 매출번호 */
, COALESCE((SELECT CdNm FROM SWSA050A_TBL WHERE majorCd = 'AR' AND minorCd = A.outRegion), '') AS outRegionNm /* 납품지명 */
, COALESCE((SELECT CustNm FROM SWSB011A_TBL WHERE custCd = A.addReGion), '') AS addReGionNm /* 장착지명 */
, COALESCE((SELECT CustNm FROM SWSB210A_TBL WHERE custCd = A.custUser), '') AS custUserNm /* 실사용자명 */
FROM SWSC111A_TBL A
WHERE orderNo = #{orderNo} /* 계약번호 */
ORDER BY serial ASC
</select>
<!--
/**
* 계약일련번호 중복 확인
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<select id="getInOutSerialDuplicateCount" parameterType="map" resultType="int">
/* salesmgmt.inout.getInOutSerialDuplicateCount */
SELECT COUNT(*)
FROM SWSF010A_TBL A
WHERE orderNo = #{orderNo} /* 계약번호 */
AND serial = #{serial} /* 계약일련번호 */
AND inOutNo <![CDATA[ <> ]]> #{inOutNo}
</select>
<!--
/**
* 제품입고/출하/출고 저장
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<update id="insertInOut" parameterType="map">
/* salesmgmt.inout.insertInOut */
INSERT INTO SWSF010A_TBL (
inOutNo /* 입고번호 */
,acntUnit /* 사업부 */
,deliveryType /* 입고구분 */
,prcsYmd /* 입고년월 */
,ser /* 일련번호 */
,orderNo /* 계약번호 */
,serial /* 계약일련번호 */
,qty /* 입고수량 */
,inOutDate /* 입고일자 */
,goodsCd /* 제품코드 */
,c_Class /* 제품그룹 */
,pshellNo /* 제조번호 */
,carNo /* 샤시번호 */
,kakjaNo /* 차대번호 */
,outPlace /* 출고처코드 */
,inPlace /* 입고처코드 */
,upperAreaCd /* 장착지 */
,areaCd /* AS지역코드 */
,jiSaCd /* 담당지사 */
,deptCd /* 입력부서 */
,workPerson /* 입력자 */
,remark /* 비고 */
,cret_date /* 생성일시 */
,cretEmpNo /* 생성자 */
,edit_date /* 수정일시 */
,editEmpNo /* 수정자 */
,pshellNo1 /* 크레인 자기인증 제조번호 */
,pshellNo2 /* 로테이터 */
,pshellNo3 /* 붐/그래플 */
) VALUES (
#{inOutNo} /* 입고번호 */
,#{acntUnit} /* 사업부 */
,#{deliveryType}/* 입고구분 */
,#{prcsYmd} /* 입고년월 */
,#{ser} /* 일련번호 */
,#{orderNo} /* 계약번호 */
,#{serial} /* 계약일련번호 */
,#{qty}::numeric/* 입고수량 */
,#{inOutDate} /* 입고일자 */
,#{goodsCd} /* 제품코드 */
,#{cClass} /* 제품그룹 */
,#{pShellNo} /* 제조번호 */
,#{carNo} /* 샤시번호 */
,#{kakjaNo} /* 차대번호 */
,#{outPlace} /* 출고처코드 */
,#{inPlace} /* 입고처코드 */
,#{upperAreaCd} /* 장착지 */
,#{areaCd} /* AS지역코드 */
,#{jiSaCd} /* 담당지사 */
,#{deptCd} /* 입력부서 */
,#{cretEmpNo} /* 입력자 */
,#{remark} /* 비고 */
,now() /* 생성일시 */
,#{cretEmpNo} /* 생성자 */
,now() /* 수정일시 */
,#{cretEmpNo} /* 수정자 */
,#{pShellNo1} /* 크레인 자기인증 제조번호 */
,#{pShellNo1} /* 로테이터 */
,#{pShellNo1} /* 붐/그래플 */
) ON
CONFLICT (inOutNo) DO /* 입고번호 */
UPDATE SET
acntUnit = #{acntUnit} /* 사업부 */
,deliveryType = #{deliveryType} /* 입고구분 */
,prcsYmd = #{prcsYmd} /* 입고년월 */
,orderNo = #{orderNo} /* 계약번호 */
,serial = #{serial} /* 계약일련번호 */
,qty = #{qty}::numeric /* 입고수량 */
,inOutDate = #{inOutDate} /* 입고일자 */
,goodsCd = #{goodsCd} /* 제품코드 */
,c_Class = #{cClass} /* 제품그룹 */
,pshellNo = #{pShellNo} /* 제조번호 */
,carNo = #{carNo} /* 샤시번호 */
,kakjaNo = #{kakjaNo} /* 차대번호 */
,outPlace = #{outPlace} /* 출고처코드 */
,inPlace = #{inPlace} /* 입고처코드 */
,upperAreaCd = #{upperAreaCd} /* 장착지 */
,areaCd = #{areaCd} /* AS지역코드 */
,jiSaCd = #{jiSaCd} /* 담당지사 */
,remark = #{remark} /* 비고 */
,edit_date = now() /* 수정일시 */
,editEmpNo = #{cretEmpNo} /* 수정자 */
,pshellNo1 = #{pShellNo1} /* 크레인 자기인증 제조번호 */
,pshellNo2 = #{pShellNo1} /* 로테이터 */
,pshellNo3 = #{pShellNo1} /* 붐/그래플 */
</update>
<!--
/**
* 제품입고/출하/출고 삭제
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<delete id="deleteInOut" parameterType="map">
/* salesmgmt.inout.deleteInOut */
DELETE FROM SWSF010A_TBL
WHERE inOutNo = #{inOutNo} /* 입고번호 */
</delete>
<!--
/**
* 계약 출하수량 등록
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<update id="updateContractInAddSaleQty" parameterType="map">
/* salesmgmt.inout.updateContractInAddSaleQty */
UPDATE SWSC110A_TBL SET
saleQty = COALESCE(saleQty, 0) + 1
WHERE orderNo = #{orderNo}
</update>
<!--
/**
* 계약 출고수량 등록
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<update id="updateContractOutAddSaleQty" parameterType="map">
/* salesmgmt.inout.updateContractOutAddSaleQty */
UPDATE SWSC110A_TBL SET
saleQty1 = COALESCE(saleQty1, 0) + 1
WHERE orderNo = #{orderNo}
</update>
<!--
/**
* 계약 출하수량 등록
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<update id="updateContractInDelSaleQty" parameterType="map">
/* salesmgmt.inout.updateContractInDelSaleQty */
UPDATE SWSC110A_TBL SET
saleQty = saleQty - 1
WHERE orderNo = #{orderNo}
</update>
<!--
/**
* 계약 출고수량 등록
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<update id="updateContractOutDelSaleQty" parameterType="map">
/* salesmgmt.inout.updateContractOutDelSaleQty */
UPDATE SWSC110A_TBL SET
saleQty1 = saleQty1 - 1
WHERE orderNo = #{orderNo}
</update>
<!--
/**
* 납기예정 출하정보 등록
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<update id="updateDeliveryInDate" parameterType="map">
/* salesmgmt.inout.updateDeliveryInDate */
UPDATE SWSC111A_TBL SET
outDate = #{inOutDate} /* 출하일자 */
,outNo = #{inOutNo} /* 출하번호 */
WHERE orderNo = #{orderNo} /* 일련번호 */
AND serial = #{serial} /* 계약일련번호 */
</update>
<!--
/**
* 납기예정 출고정보 등록
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<update id="updateDeliveryOutDate" parameterType="map">
/* salesmgmt.inout.updateDeliveryOutDate */
UPDATE SWSC111A_TBL SET
OutDate1 = #{inOutDate} /* 출고일자 */
,OutNo1 = #{inOutNo} /* 출고번호 */
,NapPumDate = #{inOutDate} /* 납품일자 */
WHERE orderNo = #{orderNo} /* 일련번호 */
AND serial = #{serial} /* 계약일련번호 */
</update>
</mapper>