Files
wace_plm/src/com/pms/salesmgmt/mapper/contractMgmt.xml
hjjeong 34f5207ded feat: 견적/주문서 관리 기능 개선
- 견적등록 유/무상 select 박스에 selected 속성 추가
- 주문서 목록 페이지 업데이트
- 수주 관련 컬럼 추가 SQL 스크립트 추가 (add_order_columns.sql)
- estimate_template_tables.sql 업데이트
- contractMgmt.xml 쿼리 개선
2025-10-17 14:24:23 +09:00

4193 lines
127 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="contractMgmt">
<!--
/**
* 계약관리 목록 조회
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
* 2021.10.07 민상익 사업부필드와 국가필드 , 계약년월, 일련번호,추가 조회
**/
-->
<select id="getContractMgmtList" parameterType="map" resultType="map">
/* contractMgmt.getContractMgmtList */
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY CRET_DATE) AS RNUM
, orderNo /* 계약번호 */
, orderUnit /* 시장구분 */
, saleGB /* 판매구분 */
, saleType /* 판매유형 */
, custCd /* 고객코드 */
, goodsCd /* 제품코드 */
, orderDate /* 계약일자 */
, goodsGuarantee /* 보증기간 */
, goodsQty /* 계약수량 */
, saleQty /* 출하수량 */
, saleQty1 /* 출고수량 */
, supplyQty /* 매출수량 */
, salePrice /* 단가 */
, saleAmt /* 금액 */
, vatAmt /* 부가세 */
, (SaleAmt+VatAmt) AS totSaleAmt /* 합계 */
, supplyAmt /* 매출액 */
, rcptAmt /* 수금액 */
, cretEmpNo /* 입력자 */
, acntUnit /* 사업부 */
, nationGB /* 국가 */
, orderYm /* 계약년월 */
, orderSer /* 일련번호 */
, chulhaYN /* 출하대상 */
, (SELECT CdNm FROM SWSA050A_TBL WHERE MajorCd = 'SE' AND MinorCd = A.OrderUnit) AS orderUnitNm /* 시장구분명 */
, (CASE A.SaleGB WHEN '0' THEN '일반' WHEN '1' THEN '대리점' END) AS saleGBNm /* 판매구분명 */
, (SELECT CdNm FROM SWSA050A_TBL WHERE MajorCd = 'GE' AND MinorCd = A.SaleType) AS saleTypeNm /* 판매유형명 */
, (SELECT CustNm FROM SWSB210A_TBL WHERE CustCd = A.CustCd) AS custNm /* 고객명 */
, (SELECT GoodsNm FROM SWSB110A_TBL WHERE GoodsCd = A.GoodsCd) AS goodsNm /* 제품명 */
FROM SWSC110A_TBL A
WHERE 1 = 1
<if test='condAcntUnit != null and condAcntUnit != ""'>
AND AcntUnit = #{condAcntUnit} /* 사업부 */
</if>
<if test='Year != null and Year != ""'>
AND orderYm = 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="getContractMgmtListCnt" parameterType="map" resultType="map">
/* contractMgmt.getContractMgmtListCnt */
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 SWSC110A_TBL
WHERE 1 = 1
<if test="condAcntUnit != null and condAcntUnit != '' ">
AND AcntUnit = #{condAcntUnit} /* 사업부 */
</if>
<if test="Year != null and Year != '' ">
AND orderYm =CONCAT(#{Year},#{Month}) /* 계약년월 */
</if>
) T
) T
</select>
<!--
/**
* 고객, 딜러, 제품를 선택한 계약관리 목록 조회
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<select id="getContractMgmtListRelation" parameterType="map" resultType="map">
/* contractMgmt.getContractMgmtListRelation */
SELECT OrderNo /* 계약번호 */
, OrderUnit /* 시장구분 */
, SaleGB /* 판매구분 */
, SaleType /* 판매유형 */
, CustCd /* 고객코드 */
, GoodsCd /* 제품코드 */
, OrderDate /* 계약일자 */
, GoodsGuarantee /* 보증기간 */
, GoodsQty /* 계약수량 */
, SaleQty /* 출하수량 */
, SaleQty1 /* 출고수량 */
, SupplyQty /* 매출수량 */
, SalePrice /* 단가 */
, SaleAmt /* 금액 */
, VatAmt /* 부가세 */
, (SaleAmt+VatAmt) AS TotSaleAmt /* 합계 */
, SupplyAmt /* 매출액 */
, RcptAmt /* 수금액 */
, CretEmpNo /* 입력자 */
, AcntUnit /* 사업부 */
, NationGB /* 국가 */
, orderYm /* 계약년월 */
, orderSer /* 일련번호 */
, (SELECT CdNm FROM SWSA050A_TBL WHERE MajorCd = 'SE' AND MinorCd = A.OrderUnit) AS OrderUnitNm /* 시장구분명 */
, (CASE A.SaleGB WHEN '0' THEN '일반' WHEN '1' THEN '대리점' END) AS SaleGBNm /* 판매구분명 */
, (SELECT CdNm FROM SWSA050A_TBL WHERE MajorCd = 'GE' AND MinorCd = A.SaleType) AS SaleTypeNm /* 판매유형명 */
, (SELECT CustNm FROM SWSB210A_TBL WHERE CustCd = A.CustCd) AS CustNm /* 고객명 */
, (SELECT GoodsNm FROM SWSB110A_TBL WHERE GoodsCd = A.GoodsCd) AS GoodsNm /* 제품명 */
FROM SWSC110A_TBL A
WHERE 1 = 1
<if test='condSearchType == "customer"'>
AND custCd = #{condCustCd} /* 고객코드 */
</if>
<if test='condSearchType == "dealer"'>
AND salesMan = #{condSalesMan} /* 딜러코드 */
</if>
<if test='condSearchType == "goods"'>
AND goodsCd = #{goodsCd} /* 제품코드 */
</if>
ORDER BY CRET_DATE ASC
</select>
<!--
/**
* 계약관리 조회
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<select id="getContractMgmt" parameterType="map" resultType="map">
/* contractMgmt.getContractMgmt */
SELECT A.*
, (SELECT CdNm FROM SWSA050A_TBL WHERE MajorCd = 'SE' AND MinorCd = A.OrderUnit) AS OrderUnitNm /* 시장구분명 */
, (CASE A.SaleGB WHEN '0' THEN '일반' WHEN '1' THEN '대리점' END) AS SaleGBNm /* 판매구분명 */
, (SELECT CdNm FROM SWSA050A_TBL WHERE MajorCd = 'GE' AND MinorCd = A.SaleType) AS SaleTypeNm /* 판매유형명 */
, (SELECT dept_name FROM DEPT_INFO WHERE dept_code = A.DEPTCD) AS deptnm /* 계약부서명 */
, (SELECT user_name FROM USER_INFO WHERE user_id = A.SALESMAN) AS salesmanNm /* 계약자명 */
, B.CustNm /* 고객명 */
, B.CustBoss /* 대표자명 */
, B.TaxNo1 /* 사업자번호 */
, B.TaxNo2 /* 법인/주민번호 */
, C.goodsNm /* 제품명 */
, C.goodsSpec /* 제품규격 */
, C.c_class /* 제품그룹 */
, CASE WHEN C.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(C.c_class,1,1)),
'-',
(SELECT ltrim(rtrim(DTL_NM)) from SWSA999A_TBL where COMM_CD = 'S120' AND SUBSTRING(DTL_CD,1,3) = SUBSTRING(C.c_class,1,3)),
'-',
(SELECT ltrim(rtrim(DTL_NM)) from SWSA999A_TBL where COMM_CD = 'S130' AND DTL_CD = C.c_class )
)
ELSE '' END AS c_classNm /* 제품그룹명 */
FROM SWSC110A_TBL A
LEFT OUTER JOIN SWSB210A_TBL B
ON A.CustCd = B.CustCd /* 고객코드 */
LEFT OUTER JOIN SWSB110A_TBL C
ON A.goodsCd = C.goodsCd /* 제품코드 */
WHERE A.OrderNo = #{orderNo} /* 계약번호 */
</select>
<!--
/**
* 계약관리 일련번호 조회
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<select id="getContractMgmtOrderSer" parameterType="map" resultType="int">
/* contractMgmt.getContractMgmtOrderSer */
SELECT COALESCE(MAX(orderSer)::INTEGER, 0) + 1
FROM SWSC110A_TBL
WHERE AcntUnit = #{acntUnit} /* 사업부 */
AND OrderYm = #{orderYm} /* 계약년월 */
</select>
<!--
/**
* 계약관리 저장
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<update id="insertContractMgmt" parameterType="map">
/* contractMgmt.insertContractMgmt */
INSERT INTO SWSC110A_TBL (
OrderNo /* 계약번호 */
,AcntUnit /* 사업부 */
,OrderYm /* 계약년월 */
,OrderSer /* 일련번호 */
,OrderUnit /* 시장구분 */
,SaleGB /* 판매구분 */
,SaleType /* 판매유형 */
,ChulhaYN /* 출하대상 */
,CustCd /* 고객코드 */
,DeptCd /* 계약부서 */
,Salesman /* 계약자 */
,BDeptCd /* 관리부서 */
,BEmpNo /* 관리담당자 */
,OrderDate /* 계약일자 */
,FinishDate /* 최종납기일자 */
,GoodsCd /* 제품코드 */
,GoodsGuarantee /* 보증기간 */
,GoodsQty /* 계약수량 */
,SalePrice /* 계약단가 */
,SaleAmt /* 계약금액 */
,VatAmt /* 부가세 */
,BiGo /* 비고 */
,WorkMan /* 입력자 */
,CancelFlag /* 계약취소 */
,CRET_DATE /* 생성일시 */
,CretEmpNo /* 생성자 */
,EDIT_DATE /* 수정일시 */
,EditEmpNo /* 수정자 */
,GoodsYN /* 제품구분 */
) VALUES (
#{orderNo} /* 계약번호 */
,#{acntUnit} /* 사업부 */
,#{orderYm} /* 계약년월 */
,#{orderSer} /* 일련번호 */
,#{orderUnit} /* 시장구분 */
,#{saleGB} /* 판매구분 */
,#{saleType} /* 판매유형 */
,#{chulhaYN} /* 출하대상 */
,#{custCd} /* 고객코드 */
,#{deptCd} /* 계약부서 */
,#{salesman} /* 계약자 */
,#{bDeptCd} /* 관리부서 */
,#{bEmpNo} /* 관리담당자 */
,#{orderDate} /* 계약일자 */
,#{finishDate} /* 최종납기일자 */
,#{goodsCd} /* 제품코드 */
,#{goodsGuarantee}::numeric /* 보증기간 */
,#{goodsQty}::numeric /* 계약수량 */
,#{salePrice}::numeric /* 계약단가 */
,#{saleAmt}::numeric /* 계약금액 */
,#{vatAmt}::numeric /* 부가세 */
,#{biGo} /* 비고 */
,#{cretEmpNo} /* 이볅자 */
,#{cancelFlag} /* 계약취소 */
,now() /* 생성일시 */
,#{cretEmpNo} /* 생성자 */
,now() /* 수정일시 */
,#{cretEmpNo} /* 수정자 */
,#{goodsYN} /* 제품구분 */
) ON
CONFLICT (OrderNo) DO
UPDATE SET
OrderUnit = #{orderUnit} /* 시장구분 */
,SaleGB = #{saleGB} /* 판매구분 */
,SaleType = #{saleType} /* 판매유형 */
,ChulhaYN = #{chulhaYN} /* 출하대상 */
,CustCd = #{custCd} /* 고객코드 */
,DeptCd = #{deptCd} /* 계약부서 */
,Salesman = #{salesman} /* 계약자 */
,BDeptCd = #{bDeptCd} /* 관리부서 */
,BEmpNo = #{bEmpNo} /* 관리담당자 */
,OrderDate = #{orderDate} /* 계약일자 */
,FinishDate = #{finishDate} /* 최종납기일자 */
,GoodsCd = #{goodsCd} /* 제품코드 */
,GoodsGuarantee = #{goodsGuarantee}::numeric /* 보증기간 */
,GoodsQty = #{goodsQty}::numeric /* 계약수량 */
,SalePrice = #{salePrice}::numeric /* 계약단가 */
,SaleAmt = #{saleAmt}::numeric /* 계약금액 */
,VatAmt = #{vatAmt}::numeric /* 부가세 */
,BiGo = #{biGo} /* 비고 */
,EDIT_DATE = now() /* 수정일시 */
,EditEmpNo = #{cretEmpNo} /* 수정자 */
,GoodsYN = #{goodsYN} /* 제품구분 */
,CancelFlag = #{cancelFlag} /* 계약취소 */
,CancelWorkMan = #{cancelWorkMan} /* 취소자 */
,CancelBiGo = #{cancelBigo} /* 취소사유 */
</update>
<!--
/**
* 계약관리 삭제
* @since 2021.10.01
* @author kim
* @version 1.0
*
* << 개정 이력 >>
*
* 수정일 수정자 수정내용
* **************** ********************** ********************************************************
* 2021.10.01 김효일 최초작성
**/
-->
<delete id="deleteContractMgmt" parameterType="map">
/* contractMgmt.deleteContractMgmt */
UPDATE SWSC110A_TBL SET
CancelFlag = 'Y' /* 계약취소 */
,CancelWorkMan = #{cancelWorkMan} /* 취소자 */
,CancelBiGo = #{cancelBigo} /* 취소사유 */
WHERE OrderNo = #{orderNo} /* 계약번호 */
</delete>
<!-- 계약관리 -->
<select id="contractListCnt" parameterType="map" resultType="map">
SELECT
CEIL(TOTAL_CNT::numeric/#{COUNT_PER_PAGE}::numeric) as MAX_PAGE_SIZE,
T.TOTAL_CNT::integer
FROM (
SELECT
COUNT(1)::float TOTAL_CNT
FROM (
SELECT
T.*
FROM
<include refid="contractBase"/> T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND SUBSTR(CONTRACT_DATE,0,5) = #{Year}
</if>
<if test="category_cd !=null and category_cd != '' ">
AND category_cd = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND customer_objid = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND product = #{product}
</if>
<if test="status_cd !=null and status_cd !=''">
AND status_cd = #{status_cd}
</if>
<if test="result_cd !=null and result_cd !=''">
AND result_cd = #{result_cd}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(CONTRACT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(CONTRACT_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
<if test="pm_user_id !=null and pm_user_id !=''">
AND pm_user_id = #{pm_user_id}
</if>
) AS T
) AS T
WHERE 1=1
</select>
<sql id="contractBase">
(
SELECT
OBJID
,CATEGORY_CD
,CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME
,CUSTOMER_OBJID
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME
,PRODUCT
,CODE_NAME(PRODUCT) AS PRODUCT_NAME
,CUSTOMER_PROJECT_NAME
,STATUS_CD
,CODE_NAME(STATUS_CD) AS STATUS_NAME
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,CODE_NAME(FACILITY) AS FACILITY_NAME
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CODE_NAME(BUS_CAL_CD) AS BUS_CAL_NAME
,CATEGORY1_CD
,CODE_NAME(CATEGORY1_CD) AS CATEGORY1_NAME
,CHG_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CHG_USER_ID ) AS CHG_USER_NAME
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,CODE_NAME(RESULT_CD) AS RESULT_NAME
,PROJECT_NO
,PM_USER_ID
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.PM_USER_ID ) AS PM_USER_NAME
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,CODE_NAME(CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
,REGDATE
,TO_CHAR(REGDATE,'YYYY-MM-DD') AS REG_DATE
,WRITER
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER ) AS WRITER_NAME
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = T.OBJID AND DOC_TYPE='contractMgmt01' AND UPPER(STATUS) = 'ACTIVE') AS CU01_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = T.OBJID AND DOC_TYPE='contractMgmt02' AND UPPER(STATUS) = 'ACTIVE') AS CU02_CNT
,(CASE WHEN (RESULT_CD is null or RESULT_CD ='') and (SPEC_RESULT_CD is null or RESULT_CD ='') and (EST_RESULT_CD is null or RESULT_CD ='') then '0'
ELSE 1
END
) AS CU03_CNT
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CODE_NAME(CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CODE_NAME(MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
,CONTRACT_RESULT
,CODE_NAME(CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
,PROJECT_NAME
,AREA_CD
,CODE_NAME(AREA_CD) AS AREA_NAME
,MECHANICAL_TYPE
,OVERHAUL_ORDER
,CASE
WHEN PAID_TYPE = 'paid' THEN '유상'
WHEN PAID_TYPE = 'free' THEN '무상'
ELSE PAID_TYPE
END AS PAID_TYPE
,RECEIPT_DATE
,PART_NO
,PART_NAME
,SERIAL_NO
,QUANTITY
,CUSTOMER_REQUEST
,EXCHANGE_RATE
,EST_PRICE
,EST_SUPPLY_PRICE
,ORDER_DATE
,ORDER_UNIT_PRICE
,ORDER_SUPPLY_PRICE
,ORDER_VAT
,ORDER_TOTAL_AMOUNT
,(SELECT COUNT(1) FROM ESTIMATE_TEMPLATE WHERE CONTRACT_OBJID = T.OBJID) AS EST_STATUS
,(
SELECT IS_SEND
FROM MAIL_LOG
WHERE MAIL_TYPE = 'CONTRACT_ESTIMATE'
AND TITLE LIKE '%[OBJID:' || T.OBJID || ']%'
ORDER BY LOG_TIME DESC
LIMIT 1
) AS MAIL_SEND_STATUS
,(
SELECT TO_CHAR(LOG_TIME, 'YYYY-MM-DD HH24:MI')
FROM MAIL_LOG
WHERE MAIL_TYPE = 'CONTRACT_ESTIMATE'
AND TITLE LIKE '%[OBJID:' || T.OBJID || ']%'
ORDER BY LOG_TIME DESC
LIMIT 1
) AS MAIL_SEND_DATE
,A.APPR_STATUS
,A.APPROVAL_OBJID
,A.ROUTE_OBJID
FROM
CONTRACT_MGMT AS T
LEFT OUTER JOIN
(
SELECT
B.OBJID AS ROUTE_OBJID,
CASE B.STATUS
WHEN 'inProcess' THEN '결재중'
WHEN 'complete' THEN '결재완료'
WHEN 'reject' THEN '반려'
ELSE ''
END APPR_STATUS,
A.OBJID AS APPROVAL_OBJID,
A.TARGET_OBJID,
B.ROUTE_SEQ
FROM
APPROVAL A,
(
select
T1.*
from
(
select
TARGET_OBJID,
max(T.ROUTE_SEQ) as ROUTE_SEQ
from
ROUTE T
group by
T.TARGET_OBJID
) T,
ROUTE T1
where
T.TARGET_OBJID = T1.TARGET_OBJID
and T.ROUTE_SEQ = T1.ROUTE_SEQ
) B
WHERE
A.OBJID = B.APPROVAL_OBJID
AND TARGET_TYPE IN ('CONTRACT_ESTIMATE')
) A
ON T.OBJID::numeric = A.TARGET_OBJID
)
</sql>
<!-- //계약관리 리스트 -->
<select id="contractList" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT
T.*,
ROW_NUMBER() OVER (ORDER BY CONTRACT_NO DESC) AS RNUM
FROM (
SELECT
T.*
FROM
<include refid="contractBase"/> T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND SUBSTR(CONTRACT_DATE,0,5) = #{Year}
</if>
<if test="category_cd !=null and category_cd != '' ">
AND category_cd = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND customer_objid = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND product = #{product}
</if>
<if test="status_cd !=null and status_cd !=''">
AND status_cd = #{status_cd}
</if>
<if test="result_cd !=null and result_cd !=''">
AND result_cd = #{result_cd}
</if>
<if test="receipt_start_date != null and !''.equals(receipt_start_date)">
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{receipt_start_date}, 'YYYY-MM-DD')
</if>
<if test="receipt_end_date != null and !''.equals(receipt_end_date)">
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{receipt_end_date}, 'YYYY-MM-DD')
</if>
<if test="due_start_date != null and !''.equals(due_start_date)">
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{due_start_date}, 'YYYY-MM-DD')
</if>
<if test="due_end_date != null and !''.equals(due_end_date)">
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{due_end_date}, 'YYYY-MM-DD')
</if>
<if test="pm_user_id !=null and pm_user_id !=''">
AND pm_user_id = #{pm_user_id}
</if>
<if test="contract_month != null and !''.equals(contract_month)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYY-MM-DD'),'YYYY-MM-DD'),'YYYY-MM') <![CDATA[ = ]]> TO_DATE(SUBSTRING(#{contract_month} FROM 1 FOR 4) || '-' || SUBSTRING(#{contract_month} FROM 5 FOR 2), 'YYYY-MM')
</if>
)AS T
) AS T
WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND T.RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND T.RNUM >= #{PAGE_START} ]]>
</if>
</select>
<!-- //계약관리 리스트 -->
<select id="contractGridList" parameterType="map" resultType="map">
SELECT
T.*
FROM
<include refid="contractBase"/> T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND SUBSTR(CONTRACT_DATE,0,5) = #{Year}
</if>
<if test="category_cd !=null and category_cd != '' ">
AND category_cd = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND customer_objid = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND product = #{product}
</if>
<if test="status_cd !=null and status_cd !=''">
AND status_cd = #{status_cd}
</if>
<if test="result_cd !=null and result_cd !=''">
AND result_cd = #{result_cd}
</if>
<if test="contract_result !=null and contract_result !=''">
AND contract_result = #{contract_result}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(CONTRACT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(CONTRACT_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
<if test="pm_user_id !=null and pm_user_id !=''">
AND pm_user_id = #{pm_user_id}
</if>
<if test="contract_month != null and !''.equals(contract_month)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYY-MM-DD'),'YYYY-MM-DD'),'YYYY-MM') <![CDATA[ = ]]> TO_DATE(SUBSTRING(#{contract_month} FROM 1 FOR 4) || '-' || SUBSTRING(#{contract_month} FROM 5 FOR 2), 'YYYY-MM')
</if>
<!-- 견적관리 추가 검색조건 -->
<if test="appr_status !=null and appr_status != '' ">
AND APPR_STATUS = #{appr_status}
</if>
<if test="area_cd != null and area_cd !='' ">
AND AREA_CD = #{area_cd}
</if>
<if test="paid_type != null and paid_type !='' ">
AND PAID_TYPE = #{paid_type}
</if>
<if test="search_partNo != null and search_partNo != ''">
AND UPPER(PART_NO) LIKE UPPER('%${search_partNo}%')
</if>
<if test="search_partName != null and search_partName != ''">
AND UPPER(PART_NAME) LIKE UPPER('%${search_partName}%')
</if>
<if test="search_serialNo != null and search_serialNo != ''">
AND UPPER(SERIAL_NO) LIKE UPPER('%${search_serialNo}%')
</if>
<if test="receipt_start_date != null and !''.equals(receipt_start_date)">
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{receipt_start_date}, 'YYYY-MM-DD')
</if>
<if test="receipt_end_date != null and !''.equals(receipt_end_date)">
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{receipt_end_date}, 'YYYY-MM-DD')
</if>
<if test="due_start_date != null and !''.equals(due_start_date)">
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{due_start_date}, 'YYYY-MM-DD')
</if>
<if test="due_end_date != null and !''.equals(due_end_date)">
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{due_end_date}, 'YYYY-MM-DD')
</if>
<if test="order_start_date != null and !''.equals(order_start_date)">
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{order_start_date}, 'YYYY-MM-DD')
</if>
<if test="due_end_date != null and !''.equals(due_end_date)">
AND TO_DATE(ORDER_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{due_end_date}, 'YYYY-MM-DD')
</if>
ORDER BY REGDATE DESC
</select>
<select id="contractList_bak" parameterType="map" resultType="map">
SELECT *
FROM (
SELECT CONTRACT_MGMT.*,ROW_NUMBER() OVER (ORDER BY CONTRACT_NO DESC) AS RNUM
FROM(
SELECT T.OBJID::VARCHAR
,CONTRACT_NO --계약번호
,(SELECT CODE_NAME(SUPPLY_CODE) FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS SUPPLY_CODE --구분
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS SUPPLY_NAME --고객명
,(SELECT CODE_NAME(AREA_CD) FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS AREA_CD --지역
,(SELECT CHARGE_USER_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CHARGE_USER_NAME --대표자명
,(SELECT REG_ID FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS REG_ID --실사용자명
,(SELECT BUS_REG_NO FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS BUS_REG_NO --사업자등록번호
,(SELECT REG_NO FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS REG_NO --법인/주민번호
,CODE_NAME(PRODUCT_GROUP) AS PRODUCT_GROUP_NAME
,(SELECT PRODUCT_CODE FROM PRODUCT_MGMT AS O WHERE O.OBJID::VARCHAR = T.PRODUCT) AS PRODUCT_NAME
,QTY
,CODE_NAME(PRODUCT_GROUP1) AS PRODUCT_GROUP_NAME1
,(SELECT PRODUCT_CODE FROM PRODUCT_MGMT AS O WHERE O.OBJID::VARCHAR = T.PRODUCT1) AS PRODUCT_NAME1
,QTY1
,CODE_NAME(PRODUCT_GROUP2) AS PRODUCT_GROUP_NAME2
,(SELECT PRODUCT_CODE FROM PRODUCT_MGMT AS O WHERE O.OBJID::VARCHAR = T.PRODUCT2) AS PRODUCT_NAME2
,QTY2
,(SELECT COUNT(1) from CONTRACT_MGMT_OPTION O WHERE O.CONTRACT_OBJID = T.OBJID) AS OPTIONCNT
,WARRANTY
,WARRANTY_KM
,WARRANTY1
,WARRANTY_KM1
,WARRANTY2
,WARRANTY_KM2
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CONTRACT_USER_ID ) AS CONTRACT_USER_NAME
,EST_RELEASE_DATE
,EST_RELEASE_DATE1
,EST_RELEASE_DATE2
,CONTRACT_DATE
,TOTAL_PRICE
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = T.OBJID AND DOC_TYPE='contractMgmt01' AND UPPER(STATUS) = 'ACTIVE') AS CU01_CNT
,COALESCE((SELECT CASE WHEN
COALESCE((CONTRACT_COST::NUMERIC+ MID_PAY_COST1::NUMERIC + MID_PAY_COST2::NUMERIC + BALANCE_COST::NUMERIC),0) = 0
THEN 0
ELSE 1 END AS COST
FROM FUND_MGMT
WHERE PARENT_OBJID = T.OBJID::VARCHAR
),0)::VARCHAR AS STATUS
FROM
CONTRACT_MGMT AS T,
SUPPLY_MNG T1
WHERE T.CUSTOMER_OBJID::NUMERIC = T1.OBJID
<if test="PRODUCT_CATEGORY !=null and PRODUCT_CATEGORY != '' ">
AND
(
(T.PRODUCT_GROUP = #{PRODUCT_CATEGORY}) OR
(T.PRODUCT_GROUP1 = #{PRODUCT_CATEGORY}) OR
(T.PRODUCT_GROUP2 = #{PRODUCT_CATEGORY})
)
</if>
<if test="PRODUCT !=null and PRODUCT != '' ">
AND
(
(T.PRODUCT = #{PRODUCT}) OR
(T.PRODUCT1 = #{PRODUCT}) OR
(T.PRODUCT2 = #{PRODUCT})
)
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(T.REGDATE,'YYYY') = #{Year}
</if>
<if test="type_cd !=null and type_cd != '' ">
AND T1.SUPPLY_CODE = #{type_cd}
</if>
<if test="customer_cd != null and customer_cd !='' ">
AND T1.OBJID = #{customer_cd}::NUMERIC
</if>
<if test="area_cd !=null and area_cd !=''">
AND T1.AREA_CD = #{area_cd}
</if>
<if test="product_cd !=null and product_cd !=''">
AND T.CATEGORY_CD = #{product_cd}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYYMMDD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYYMMDD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
)AS CONTRACT_MGMT
WHERE 1=1
<choose>
<when test="status_cd != null and '0000203'.equals(status_cd)">
AND CONTRACT_MGMT.STATUS = '0'
</when>
<when test="status_cd != null and '0000204'.equals(status_cd)">
AND CONTRACT_MGMT.STATUS = '1'
</when>
<otherwise>
AND 1=1
</otherwise>
</choose>
)AS T
WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND T.RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND T.RNUM >= #{PAGE_START} ]]>
</if>
</select>
<update id="saveContractMgmtInfo" parameterType="map">
INSERT INTO CONTRACT_MGMT
(
OBJID
,CATEGORY_CD
,CUSTOMER_OBJID
,PRODUCT
,CUSTOMER_PROJECT_NAME
,STATUS_CD
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CATEGORY1_CD
,CHG_USER_ID
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,PROJECT_NO
,PM_USER_ID
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,REGDATE
,WRITER
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CONTRACT_DATE
,MANUFACTURE_PLANT
,PROJECT_NAME
,SPEC_USER_ID
,SPEC_PLAN_DATE
,SPEC_COMP_DATE
,SPEC_RESULT_CD
,EST_USER_ID
,EST_PLAN_DATE
,EST_COMP_DATE
,EST_RESULT_CD
,AREA_CD
,TARGET_PROJECT_NO
,TARGET_PROJECT_NO_DIRECT
,CUSTOMER_PRODUCTION_NO
,MECHANICAL_TYPE
,OVERHAUL_ORDER
,PAID_TYPE
,RECEIPT_DATE
,PART_NO
,PART_NAME
,SERIAL_NO
,CUSTOMER_REQUEST
,EXCHANGE_RATE
)
VALUES
(
#{objId}
,#{category_cd}
,#{customer_objid}
,#{product}
,#{customer_project_name}
,#{status_cd}
,#{due_date}
,#{location}
,#{setup}
,#{facility}
,#{facility_qty}
,#{facility_type}
,#{facility_depth}
,#{production_no}
,#{bus_cal_cd}
,#{category1_cd}
,#{chg_user_id}
,#{plan_date}
,#{complete_date}
,#{result_cd}
,#{project_no}
,#{pm_user_id}
,#{contract_price}
,#{contract_price_currency}
,#{contract_currency}
,NOW()
,#{writer}
,(SELECT TO_CHAR(NOW(),'yy')::VARCHAR ||'C-'||LPAD((SELECT NEXTVAL('contract_mgmt_seq'))::VARCHAR ,4,'0'))
,#{customer_equip_name}
,#{req_del_date}
,#{contract_del_date}
,#{contract_company}
,#{contract_date}
,#{manufacture_plant}
,#{project_name}
,#{spec_user_id}
,#{spec_plan_date}
,#{spec_comp_date}
,#{spec_result_cd}
,#{est_user_id}
,#{est_plan_date}
,#{est_comp_date}
,#{est_result_cd}
,#{area_cd}
,#{target_project_no}
,#{target_project_no_direct}
,#{customer_production_no}
,#{mechanical_type}
,#{overhaul_order}
,#{paid_type}
,#{receipt_date}
,#{part_no}
,#{part_name}
,#{serial_no}
,#{customer_request}
,#{exchange_rate}
)
ON CONFLICT (OBJID) DO
UPDATE
SET
CATEGORY_CD = #{category_cd}
,CUSTOMER_OBJID = #{customer_objid}
,PRODUCT = #{product}
,CUSTOMER_PROJECT_NAME = #{customer_project_name}
,STATUS_CD = #{status_cd}
,DUE_DATE = #{due_date}
,LOCATION = #{location}
,SETUP = #{setup}
,FACILITY = #{facility}
,FACILITY_QTY = #{facility_qty}
,FACILITY_TYPE = #{facility_type}
,FACILITY_DEPTH = #{facility_depth}
,PRODUCTION_NO = #{production_no}
,BUS_CAL_CD = #{bus_cal_cd}
,CATEGORY1_CD = #{category1_cd}
,CHG_USER_ID = #{chg_user_id}
,PLAN_DATE = #{plan_date}
,COMPLETE_DATE = #{complete_date}
,RESULT_CD = #{result_cd}
,PROJECT_NO = #{project_no}
,PM_USER_ID = #{pm_user_id}
,CONTRACT_PRICE = #{contract_price}
,CONTRACT_PRICE_CURRENCY = #{contract_price_currency}
,CONTRACT_CURRENCY = #{contract_currency}
,CUSTOMER_EQUIP_NAME = #{customer_equip_name}
,REQ_DEL_DATE = #{req_del_date}
,CONTRACT_DEL_DATE = #{contract_del_date}
,CONTRACT_COMPANY = #{contract_company}
,CONTRACT_DATE = #{contract_date}
,MANUFACTURE_PLANT = #{manufacture_plant}
,PROJECT_NAME = #{project_name}
,SPEC_USER_ID = #{spec_user_id}
,SPEC_PLAN_DATE = #{spec_plan_date}
,SPEC_COMP_DATE = #{spec_comp_date}
,SPEC_RESULT_CD = #{spec_result_cd}
,EST_USER_ID = #{est_user_id}
,EST_PLAN_DATE = #{est_plan_date}
,EST_COMP_DATE = #{est_comp_date}
,EST_RESULT_CD = #{est_result_cd}
,AREA_CD = #{area_cd}
,TARGET_PROJECT_NO = #{target_project_no}
,TARGET_PROJECT_NO_DIRECT= #{target_project_no_direct}
,CUSTOMER_PRODUCTION_NO = #{customer_production_no}
,MECHANICAL_TYPE = #{mechanical_type}
,OVERHAUL_ORDER = #{overhaul_order}
,PAID_TYPE = #{paid_type}
,RECEIPT_DATE = #{receipt_date}
,PART_NO = #{part_no}
,PART_NAME = #{part_name}
,SERIAL_NO = #{serial_no}
,CUSTOMER_REQUEST = #{customer_request}
,EXCHANGE_RATE = #{exchange_rate}
</update>
<update id="saveContractMgmtInfo_old" parameterType="map">
INSERT INTO CONTRACT_MGMT
(
OBJID
,CATEGORY_CD
,CUSTOMER_OBJID
,PRODUCT
,CUSTOMER_PROJECT_NAME
,STATUS_CD
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CATEGORY1_CD
,CHG_USER_ID
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,PROJECT_NO
,PM_USER_ID
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,REGDATE
,WRITER
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CONTRACT_RESULT
,PROJECT_NAME
,SPEC_USER_ID
,SPEC_PLAN_DATE
,SPEC_COMP_DATE
,SPEC_RESULT_CD
,EST_USER_ID
,EST_PLAN_DATE
,EST_COMP_DATE
,EST_RESULT_CD
,AREA_CD
,TARGET_PROJECT_NO
,TARGET_PROJECT_NO_DIRECT
,CUSTOMER_PRODUCTION_NO
,MECHANICAL_TYPE
,OVERHAUL_ORDER
)
VALUES
(
#{objId}
,#{category_cd}
,#{customer_objid}
,#{product}
,#{customer_project_name}
,#{status_cd}
,#{due_date}
,#{location}
,#{setup}
,#{facility}
,#{facility_qty}
,#{facility_type}
,#{facility_depth}
,#{production_no}
,#{bus_cal_cd}
,#{category1_cd}
,#{chg_user_id}
,#{plan_date}
,#{complete_date}
,#{result_cd}
,#{project_no}
,#{pm_user_id}
,#{contract_price}
,#{contract_price_currency}
,#{contract_currency}
,NOW()
,#{writer}
,(SELECT TO_CHAR(NOW(),'yy')::VARCHAR ||'C-'||LPAD((SELECT NEXTVAL('contract_mgmt_seq'))::VARCHAR ,4,'0'))
,#{customer_equip_name}
,#{req_del_date}
,#{contract_del_date}
,#{contract_company}
,#{contract_date}
,#{po_no}
,#{manufacture_plant}
,#{contract_result}
,#{project_name}
,#{spec_user_id}
,#{spec_plan_date}
,#{spec_comp_date}
,#{spec_result_cd}
,#{est_user_id}
,#{est_plan_date}
,#{est_comp_date}
,#{est_result_cd}
,#{area_cd}
,#{target_project_no}
,#{target_project_no_direct}
,#{customer_production_no}
,#{mechanical_type}
,#{overhaul_order}
)
ON CONFLICT (OBJID) DO
UPDATE
SET
CATEGORY_CD = #{category_cd}
,CUSTOMER_OBJID = #{customer_objid}
,PRODUCT = #{product}
,CUSTOMER_PROJECT_NAME = #{customer_project_name}
,STATUS_CD = #{status_cd}
,DUE_DATE = #{due_date}
,LOCATION = #{location}
,SETUP = #{setup}
,FACILITY = #{facility}
,FACILITY_QTY = #{facility_qty}
,FACILITY_TYPE = #{facility_type}
,FACILITY_DEPTH = #{facility_depth}
,PRODUCTION_NO = #{production_no}
,BUS_CAL_CD = #{bus_cal_cd}
,CATEGORY1_CD = #{category1_cd}
,CHG_USER_ID = #{chg_user_id}
,PLAN_DATE = #{plan_date}
,COMPLETE_DATE = #{complete_date}
,RESULT_CD = #{result_cd}
,PROJECT_NO = #{project_no}
,PM_USER_ID = #{pm_user_id}
,CONTRACT_PRICE = #{contract_price}
,CONTRACT_PRICE_CURRENCY = #{contract_price_currency}
,CONTRACT_CURRENCY = #{contract_currency}
,CUSTOMER_EQUIP_NAME = #{customer_equip_name}
,REQ_DEL_DATE = #{req_del_date}
,CONTRACT_DEL_DATE = #{contract_del_date}
,CONTRACT_COMPANY = #{contract_company}
,CONTRACT_DATE = #{contract_date}
,PO_NO = #{po_no}
,MANUFACTURE_PLANT = #{manufacture_plant}
,CONTRACT_RESULT = #{contract_result}
,PROJECT_NAME = #{project_name}
,SPEC_USER_ID = #{spec_user_id}
,SPEC_PLAN_DATE = #{spec_plan_date}
,SPEC_COMP_DATE = #{spec_comp_date}
,SPEC_RESULT_CD = #{spec_result_cd}
,EST_USER_ID = #{est_user_id}
,EST_PLAN_DATE = #{est_plan_date}
,EST_COMP_DATE = #{est_comp_date}
,EST_RESULT_CD = #{est_result_cd}
,AREA_CD = #{area_cd}
,TARGET_PROJECT_NO = #{target_project_no}
,TARGET_PROJECT_NO_DIRECT= #{target_project_no_direct}
,CUSTOMER_PRODUCTION_NO = #{customer_production_no}
,MECHANICAL_TYPE = #{mechanical_type}
,OVERHAUL_ORDER = #{overhaul_order}
</update>
<update id="saveContractMgmtReviewInfo" parameterType="map">
INSERT INTO CONTRACT_MGMT
(
OBJID
,CHG_USER_ID
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,SPEC_USER_ID
,SPEC_PLAN_DATE
,SPEC_COMP_DATE
,SPEC_RESULT_CD
,EST_USER_ID
,EST_PLAN_DATE
,EST_COMP_DATE
,EST_RESULT_CD
<!-- ,CATEGORY_CD
,CUSTOMER_OBJID
,PRODUCT
,CUSTOMER_PROJECT_NAME
,STATUS_CD
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CATEGORY1_CD
,PROJECT_NO
,PM_USER_ID
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,REGDATE
,WRITER
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CONTRACT_RESULT
,PROJECT_NAME
,AREA_CD -->
)
VALUES
(
#{objId}
,#{chg_user_id}
,#{plan_date}
,#{complete_date}
,#{result_cd}
,#{spec_user_id}
,#{spec_plan_date}
,#{spec_comp_date}
,#{spec_result_cd}
,#{est_user_id}
,#{est_plan_date}
,#{est_comp_date}
,#{est_result_cd}
<!-- ,#{category_cd}
,#{customer_objid}
,#{product}
,#{customer_project_name}
,#{status_cd}
,#{due_date}
,#{location}
,#{setup}
,#{facility}
,#{facility_qty}
,#{facility_type}
,#{facility_depth}
,#{production_no}
,#{bus_cal_cd}
,#{category1_cd}
,#{project_no}
,#{pm_user_id}
,#{contract_price}
,#{contract_price_currency}
,#{contract_currency}
,NOW()
,#{writer}
,(SELECT TO_CHAR(NOW(),'yy')::VARCHAR ||'C-'||LPAD((SELECT NEXTVAL('contract_mgmt_seq'))::VARCHAR ,4,'0'))
,#{customer_equip_name}
,#{req_del_date}
,#{contract_del_date}
,#{contract_company}
,#{contract_date}
,#{po_no}
,#{manufacture_plant}
,#{contract_result}
,#{project_name}
,#{area_cd} -->
)
ON CONFLICT (OBJID) DO
UPDATE
SET
CHG_USER_ID = #{chg_user_id}
,PLAN_DATE = #{plan_date}
,COMPLETE_DATE = #{complete_date}
,RESULT_CD = #{result_cd}
,SPEC_USER_ID = #{spec_user_id}
,SPEC_PLAN_DATE = #{spec_plan_date}
,SPEC_COMP_DATE = #{spec_comp_date}
,SPEC_RESULT_CD = #{spec_result_cd}
,EST_USER_ID = #{est_user_id}
,EST_PLAN_DATE = #{est_plan_date}
,EST_COMP_DATE = #{est_comp_date}
,EST_RESULT_CD = #{est_result_cd}
<!-- CATEGORY_CD = #{category_cd}
,CUSTOMER_OBJID = #{customer_objid}
,PRODUCT = #{product}
,CUSTOMER_PROJECT_NAME = #{customer_project_name}
,STATUS_CD = #{status_cd}
,DUE_DATE = #{due_date}
,LOCATION = #{location}
,SETUP = #{setup}
,FACILITY = #{facility}
,FACILITY_QTY = #{facility_qty}
,FACILITY_TYPE = #{facility_type}
,FACILITY_DEPTH = #{facility_depth}
,PRODUCTION_NO = #{production_no}
,BUS_CAL_CD = #{bus_cal_cd}
,CATEGORY1_CD = #{category1_cd}
,PROJECT_NO = #{project_no}
,PM_USER_ID = #{pm_user_id}
,CONTRACT_PRICE = #{contract_price}
,CONTRACT_PRICE_CURRENCY = #{contract_price_currency}
,CONTRACT_CURRENCY = #{contract_currency}
,CUSTOMER_EQUIP_NAME = #{customer_equip_name}
,REQ_DEL_DATE = #{req_del_date}
,CONTRACT_DEL_DATE = #{contract_del_date}
,CONTRACT_COMPANY = #{contract_company}
,CONTRACT_DATE = #{contract_date}
,PO_NO = #{po_no}
,MANUFACTURE_PLANT = #{manufacture_plant}
,CONTRACT_RESULT = #{contract_result}
,PROJECT_NAME = #{project_name}
,AREA_CD = #{area_cd} -->
</update>
<select id="getContractMgmtInfo" parameterType="map" resultType="map">
SELECT
OBJID
,CATEGORY_CD
,CUSTOMER_OBJID
,PRODUCT
,CUSTOMER_PROJECT_NAME
,STATUS_CD
,DUE_DATE
,LOCATION
,SETUP
,FACILITY
,FACILITY_QTY
,FACILITY_TYPE
,FACILITY_DEPTH
,PRODUCTION_NO
,BUS_CAL_CD
,CATEGORY1_CD
,CHG_USER_ID
,PLAN_DATE
,COMPLETE_DATE
,RESULT_CD
,PROJECT_NO
,PM_USER_ID
,CONTRACT_PRICE
,CONTRACT_PRICE_CURRENCY
,CONTRACT_CURRENCY
,REGDATE
,WRITER
,CONTRACT_NO
,CUSTOMER_EQUIP_NAME
,REQ_DEL_DATE
,CONTRACT_DEL_DATE
,CONTRACT_COMPANY
,CONTRACT_DATE
,PO_NO
,MANUFACTURE_PLANT
,CONTRACT_RESULT
,PROJECT_NAME
,SPEC_USER_ID
,SPEC_PLAN_DATE
,SPEC_COMP_DATE
,SPEC_RESULT_CD
,EST_USER_ID
,EST_PLAN_DATE
,EST_COMP_DATE
,EST_RESULT_CD
,AREA_CD
,TARGET_PROJECT_NO
,TARGET_PROJECT_NO_DIRECT
,CUSTOMER_PRODUCTION_NO
,MECHANICAL_TYPE
,OVERHAUL_ORDER
,PAID_TYPE
,RECEIPT_DATE
,PART_NO
,PART_NAME
,SERIAL_NO
,QUANTITY
,CUSTOMER_REQUEST
,EXCHANGE_RATE
,ORDER_DATE
,ORDER_UNIT_PRICE
,ORDER_SUPPLY_PRICE
,ORDER_VAT
,ORDER_TOTAL_AMOUNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = A.OBJID AND DOC_TYPE='contractMgmt01' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT1
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = A.OBJID AND DOC_TYPE='contractMgmt02' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT2
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = A.OBJID AND DOC_TYPE='contractMgmt03' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT3
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = A.OBJID AND DOC_TYPE='contractMgmt04' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT4
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = A.OBJID AND DOC_TYPE='contractMgmt05' AND UPPER(STATUS) = 'ACTIVE') AS FILE_CNT5
,(SELECT SUM(FILE_SIZE) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = A.OBJID AND DOC_TYPE='contractMgmt01' AND UPPER(STATUS) = 'ACTIVE') AS FILE_SIZE1
,(SELECT SUM(FILE_SIZE) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = A.OBJID AND DOC_TYPE='contractMgmt02' AND UPPER(STATUS) = 'ACTIVE') AS FILE_SIZE2
,(SELECT TO_CHAR(REGDATE, 'YYYY-MM-DD' ) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = A.OBJID AND DOC_TYPE='contractMgmt03' AND UPPER(STATUS) = 'ACTIVE' ORDER BY REGDATE desc LIMIT 1) AS FILE_DATE3
,(SELECT TO_CHAR(REGDATE, 'YYYY-MM-DD' ) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = A.OBJID AND DOC_TYPE='contractMgmt04' AND UPPER(STATUS) = 'ACTIVE' ORDER BY REGDATE desc LIMIT 1) AS FILE_DATE4
,(SELECT TO_CHAR(REGDATE, 'YYYY-MM-DD' ) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID::VARCHAR = A.OBJID AND DOC_TYPE='contractMgmt05' AND UPPER(STATUS) = 'ACTIVE' ORDER BY REGDATE desc LIMIT 1) AS FILE_DATE5
FROM CONTRACT_MGMT A
WHERE A.OBJID = #{objId}
</select>
<delete id="deleteContractOption" parameterType="map">
DELETE FROM CONTRACT_MGMT_OPTION
WHERE CONTRACT_OBJID = #{objId}::NUMERIC
</delete>
<insert id="saveContractOption" parameterType="map">
INSERT INTO CONTRACT_MGMT_OPTION
(
OBJID
,CONTRACT_OBJID
,OPTION_OBJID
<if test="option_qty !=null and option_qty != '' ">
, OPTION_QTY
</if>
<if test="price !=null and price != '' ">
, PRICE
</if>
,note
)
VALUES
(
#{objid}::NUMERIC
, #{contract_objid}::NUMERIC
, #{option_objid}::NUMERIC
<if test="option_qty !=null and option_qty != '' ">
, #{option_qty}::NUMERIC
</if>
<if test="price !=null and price != '' ">
, #{price}::NUMERIC
</if>
, #{note}
)
</insert>
<select id="getContractDashBoard_bak" parameterType="map" resultType="map">
WITH RECURSIVE VIEW_CC(
OBJID
,CODE_ID
,PARENT_CODE_ID
,CODE_NAME
,LEV
,PATH
,CYCLE
) AS (
SELECT
OBJID
,CODE_ID
,PARENT_CODE_ID
,CODE_NAME
,1
,ARRAY [CC.CODE_ID ::TEXT]
,FALSE
FROM
COMM_CODE CC
WHERE 1=1
AND PARENT_CODE_ID = '0000001'
UNION ALL
SELECT
CC.OBJID
,CC.CODE_ID
,CC.PARENT_CODE_ID
,CC.CODE_NAME
,LEV + 1
,PATH||CC.CODE_ID::TEXT
,CC.PARENT_CODE_ID = ANY(PATH)
FROM
COMM_CODE CC
INNER JOIN VIEW_CC VC
ON CC.PARENT_CODE_ID = VC.CODE_ID
),CONTRACT_BASE AS (
SELECT
T.OBJID,
T.PRODUCT_GROUP,
T.PRODUCT,
T.PRODUCT_GROUP1,
T.PRODUCT1,
T.PRODUCT_GROUP2,
T.PRODUCT2,
TO_CHAR(TO_DATE(T.CONTRACT_DATE,'YYYYMMDD'),'MM') AS CONTRACT_MONTH,
TO_CHAR(TO_DATE(T.CONTRACT_DATE,'YYYYMMDD'),'YYYY') AS CONTRACT_YEAR,
T.QTY,
T.QTY1,
T.QTY2
FROM
CONTRACT_MGMT T,
SUPPLY_MNG T1
WHERE T.CUSTOMER_OBJID::NUMERIC = T1.OBJID
<if test="Year !=null and Year != '' ">
AND TO_CHAR(T.REGDATE,'YYYY') = #{Year}
</if>
<if test="type_cd !=null and type_cd != '' ">
AND T1.SUPPLY_CODE = #{type_cd}
</if>
<if test="customer_cd != null and customer_cd !='' ">
AND T1.OBJID = #{customer_cd}::NUMERIC
</if>
<if test="area_cd !=null and area_cd !=''">
AND T1.AREA_CD = #{area_cd}
</if>
<if test="product_cd !=null and product_cd !=''">
AND T.CATEGORY_CD = #{product_cd}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYYMMDD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYYMMDD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
),CONTRACT_PRODUCT AS (
SELECT
ROW_NUMBER() OVER (PARTITION BY VC.PARENT_CODE_ID ORDER BY VC.PATH,PM.PRODUCT_CODE) AS RNUM
,VC.*
,PM.PRODUCT_CODE
,PM.OBJID AS PRODUCT_OBJID
FROM
VIEW_CC VC
LEFT OUTER JOIN PRODUCT_MGMT PM
ON VC.PARENT_CODE_ID = PM.PRODUCT_CATEGORY
AND VC.CODE_ID = PM.PRODUCT_TYPE
WHERE VC.LEV != '1'
ORDER BY
VC.PATH
,PM.PRODUCT_CODE
),CONTRACT_BASE_DATA as(
SELECT
T.OBJID,
T.PRODUCT_GROUP,
T.PRODUCT,
T.CONTRACT_MONTH,
T.CONTRACT_YEAR,
T.QTY
FROM
CONTRACT_BASE T
UNION ALL
SELECT
T.OBJID,
T.PRODUCT_GROUP1,
T.PRODUCT1,
T.CONTRACT_MONTH,
T.CONTRACT_YEAR,
T.QTY1
FROM
CONTRACT_BASE T
UNION ALL
SELECT
T.OBJID,
T.PRODUCT_GROUP2,
T.PRODUCT2,
T.CONTRACT_MONTH,
T.CONTRACT_YEAR,
T.QTY2
FROM
CONTRACT_BASE T
),CONTRACT_DATA AS(
SELECT
PRODUCT_GROUP
,PRODUCT
,CONTRACT_YEAR
,CONTRACT_MONTH
,COUNT(1) AS CONTRACT_CNT
FROM CONTRACT_BASE_DATA
GROUP BY
PRODUCT_GROUP
,PRODUCT
,CONTRACT_YEAR
,CONTRACT_MONTH
),RELEASE_BASE_DATA as(
SELECT
RM.PRODUCT_GROUP
,RM.PRODUCT
,TO_CHAR(TO_DATE(RELEASE_DATE,'YYYY-MM-DD'),'MM') AS RELEASE_MONTH
,TO_CHAR(TO_DATE(RELEASE_DATE,'YYYY-MM-DD'),'YYYY') AS RELEASE_YEAR
FROM
RELEASE_MGMT RM
INNER JOIN CONTRACT_BASE CM
ON RM.PRODUCT_GROUP = CM.PRODUCT_GROUP::VARCHAR
AND RM.PRODUCT = CM.PRODUCT::VARCHAR
WHERE 1=1
AND RELEASE_DATE IS NOT NULL
UNION ALL
SELECT
RM.PRODUCT_GROUP
,RM.PRODUCT
,TO_CHAR(TO_DATE(RELEASE_DATE,'YYYY-MM-DD'),'MM') AS RELEASE_MONTH
,TO_CHAR(TO_DATE(RELEASE_DATE,'YYYY-MM-DD'),'YYYY') AS RELEASE_YEAR
FROM
RELEASE_MGMT RM
INNER JOIN CONTRACT_BASE CM
ON RM.PRODUCT_GROUP = CM.PRODUCT_GROUP1::VARCHAR
AND RM.PRODUCT = CM.PRODUCT1::VARCHAR
WHERE 1=1
AND RELEASE_DATE IS NOT NULL
UNION ALL
SELECT
RM.PRODUCT_GROUP
,RM.PRODUCT
,TO_CHAR(TO_DATE(RELEASE_DATE,'YYYY-MM-DD'),'MM') AS RELEASE_MONTH
,TO_CHAR(TO_DATE(RELEASE_DATE,'YYYY-MM-DD'),'YYYY') AS RELEASE_YEAR
FROM
RELEASE_MGMT RM
INNER JOIN CONTRACT_BASE CM
ON RM.PRODUCT_GROUP = CM.PRODUCT_GROUP2::VARCHAR
AND RM.PRODUCT = CM.PRODUCT2::VARCHAR
WHERE 1=1
AND RELEASE_DATE IS NOT NULL
),RELEASE_DATA AS(
SELECT
PRODUCT_GROUP
,PRODUCT
,RELEASE_MONTH
,RELEASE_YEAR
,COUNT(1) AS RELEASE_CNT
FROM RELEASE_BASE_DATA
GROUP BY
PRODUCT_GROUP
,PRODUCT
,RELEASE_YEAR
,RELEASE_MONTH
)
SELECT
(SELECT CODE_NAME FROM COMM_CODE WHERE 1=1 AND CODE_ID = CP.PARENT_CODE_ID) AS PARENT_CODE_NAME
,CP.*
<foreach collection="monthList" item="obj">
,(
SELECT
SUM(CONTRACT_CNT)
FROM
CONTRACT_DATA CD
WHERE CP.PARENT_CODE_ID = CD.PRODUCT_GROUP
AND CP.PRODUCT_OBJID::VARCHAR = CD.PRODUCT
AND CONTRACT_MONTH = #{obj.MONTH}
<if test="SEARCH_YEAR != null and '' != SEARCH_YEAR">
AND CONTRACT_YEAR = #{SEARCH_YEAR}
</if>
) AS CONTRACT_CNT_MONTH_${obj.MONTH}
,(
SELECT
SUM(RELEASE_CNT)
FROM
RELEASE_DATA RD
WHERE CP.PRODUCT_OBJID::VARCHAR = RD.PRODUCT
AND RELEASE_MONTH = #{obj.MONTH}
<if test="SEARCH_YEAR != null and '' != SEARCH_YEAR">
AND RELEASE_YEAR = #{SEARCH_YEAR}
</if>
) AS RELEASE_CNT_MONTH_${obj.MONTH}
</foreach>
,(
SELECT
SUM(CONTRACT_CNT)
FROM
CONTRACT_DATA CD
WHERE CP.PARENT_CODE_ID = CD.PRODUCT_GROUP
AND CP.PRODUCT_OBJID::VARCHAR = CD.PRODUCT
<if test="SEARCH_YEAR != null and '' != SEARCH_YEAR">
AND CONTRACT_YEAR = #{SEARCH_YEAR}
</if>
) AS CONTRACT_CNT_YEAR
,(
SELECT
SUM(RELEASE_CNT)
FROM
RELEASE_DATA RD
WHERE CP.PRODUCT_OBJID::VARCHAR = RD.PRODUCT
<if test="SEARCH_YEAR != null and '' != SEARCH_YEAR">
AND RELEASE_YEAR = #{SEARCH_YEAR}
</if>
) AS RELEASE_CNT__YEAR
FROM
CONTRACT_PRODUCT CP
WHERE 1=1
</select>
<select id="getContractDashBoard_back2" parameterType="map" resultType="map">
WITH TARGET_PRODUCT AS(
SELECT
ROW_NUMBER() OVER (PARTITION BY CC.CODE_ID ORDER BY CC.CODE_ID,PM.PRODUCT_CODE) AS RNUM
,CC.OBJID
,CC.CODE_ID AS PRODUCT_GROUP
,CC.CODE_NAME
,PM.PRODUCT_CODE
,PM.OBJID AS PRODUCT
FROM
COMM_CODE CC
LEFT OUTER JOIN
PRODUCT_MGMT PM
ON CC.CODE_ID = PM.PRODUCT_CATEGORY
WHERE 1=1
AND CC.PARENT_CODE_ID = '0000001'
),CONTRACT_BASE AS (
SELECT
T.OBJID,
T.PRODUCT_GROUP,
T.PRODUCT,
T.PRODUCT_GROUP1,
T.PRODUCT1,
T.PRODUCT_GROUP2,
T.PRODUCT2,
TO_CHAR(TO_DATE(T.CONTRACT_DATE,'YYYYMMDD'),'MM') AS CONTRACT_MONTH,
TO_CHAR(TO_DATE(T.CONTRACT_DATE,'YYYYMMDD'),'YYYY') AS CONTRACT_YEAR,
T.QTY,
T.QTY1,
T.QTY2,
CASE REPLACE(FM.CONTRACT_COST,' ','')
WHEN '' THEN '0'
ELSE FM.CONTRACT_COST
END::INTEGER CONTRACT_COST,
CASE REPLACE(FM.MID_PAY_COST1,' ','')
WHEN '' THEN '0'
ELSE FM.MID_PAY_COST1
END::INTEGER MID_PAY_COST1,
CASE REPLACE(FM.MID_PAY_COST2,' ','')
WHEN '' THEN '0'
ELSE FM.MID_PAY_COST2
END::INTEGER MID_PAY_COST2,
CASE REPLACE(FM.BALANCE_COST,' ','')
WHEN '' THEN '0'
ELSE FM.BALANCE_COST
END::INTEGER BALANCE_COST
FROM
CONTRACT_MGMT T
INNER JOIN SUPPLY_MNG T1
ON T.CUSTOMER_OBJID::NUMERIC = T1.OBJID
LEFT OUTER JOIN
FUND_MGMT FM
ON T.OBJID::VARCHAR = FM.PARENT_OBJID
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(T.REGDATE,'YYYY') = #{Year}
</if>
<if test="type_cd !=null and type_cd != '' ">
AND T1.SUPPLY_CODE = #{type_cd}
</if>
<if test="customer_cd != null and customer_cd !='' ">
AND T1.OBJID = #{customer_cd}::NUMERIC
</if>
<if test="area_cd !=null and area_cd !=''">
AND T1.AREA_CD = #{area_cd}
</if>
<if test="product_cd !=null and product_cd !=''">
AND T.CATEGORY_CD = #{product_cd}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYYMMDD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYYMMDD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
),CONTRACT_BASE_DATA as(
SELECT
T.OBJID,
T.PRODUCT_GROUP,
T.PRODUCT,
T.CONTRACT_MONTH,
T.CONTRACT_YEAR,
CASE
WHEN T.QTY IS NULL OR T.QTY = '' THEN '0'
ELSE T.QTY
END QTY,
(T.CONTRACT_COST+T.MID_PAY_COST1+T.MID_PAY_COST2+T.BALANCE_COST) AS CONTRACT_COST
FROM
CONTRACT_BASE T
UNION ALL
SELECT
T.OBJID,
T.PRODUCT_GROUP1,
T.PRODUCT1,
T.CONTRACT_MONTH,
T.CONTRACT_YEAR,
CASE
WHEN T.QTY1 IS NULL OR T.QTY1 = '' THEN '0'
ELSE T.QTY1
END QTY,
0 AS CONTRACT_COST
FROM
CONTRACT_BASE T
UNION ALL
SELECT
T.OBJID,
T.PRODUCT_GROUP2,
T.PRODUCT2,
T.CONTRACT_MONTH,
T.CONTRACT_YEAR,
CASE
WHEN T.QTY2 IS NULL OR T.QTY2 = '' THEN '0'
ELSE T.QTY2
END QTY,
0 AS CONTRACT_COST
FROM
CONTRACT_BASE T
),CONTRACT_DATA AS(
SELECT
PRODUCT_GROUP
,PRODUCT
,CONTRACT_YEAR
,CONTRACT_MONTH
,SUM(QTY::INTEGER) AS CONTRACT_CNT
,SUM(CONTRACT_COST) AS CONTRACT_COST
FROM CONTRACT_BASE_DATA
GROUP BY
PRODUCT_GROUP
,PRODUCT
,CONTRACT_YEAR
,CONTRACT_MONTH
),RELEASE_BASE_DATA AS(
SELECT
RM.PRODUCT_GROUP
,RM.PRODUCT
,TO_CHAR(TO_DATE(RELEASE_DATE,'YYYY-MM-DD'),'MM') AS RELEASE_MONTH
,TO_CHAR(TO_DATE(RELEASE_DATE,'YYYY-MM-DD'),'YYYY') AS RELEASE_YEAR
FROM
RELEASE_MGMT RM
INNER JOIN CONTRACT_BASE_DATA CMD
ON RM.PARENT_OBJID = CMD.OBJID::VARCHAR
AND RM.PRODUCT_GROUP = CMD.PRODUCT_GROUP::VARCHAR
AND RM.PRODUCT = CMD.PRODUCT::VARCHAR
WHERE 1=1
AND RM.RELEASE_DATE IS NOT NULL
),RELEASE_DATA AS(
SELECT
PRODUCT_GROUP
,PRODUCT
,RELEASE_MONTH
,RELEASE_YEAR
,COUNT(1) AS RELEASE_CNT
FROM RELEASE_BASE_DATA
GROUP BY
PRODUCT_GROUP
,PRODUCT
,RELEASE_YEAR
,RELEASE_MONTH
),FINAL_DATA AS(
SELECT
CP.PRODUCT_GROUP
,CP.PRODUCT
<foreach collection="monthList" item="obj">
,(
SELECT
SUM(CONTRACT_CNT)
FROM
CONTRACT_DATA CD
WHERE CP.PRODUCT_GROUP = CD.PRODUCT_GROUP
AND CP.PRODUCT::VARCHAR = CD.PRODUCT
AND CONTRACT_MONTH = #{obj.MONTH}
<if test="Year != null and '' != Year">
AND CONTRACT_YEAR = #{Year}
</if>
) AS CONTRACT_CNT_MONTH_${obj.MONTH}
,(
SELECT
SUM(CONTRACT_COST)
FROM
CONTRACT_DATA CD
WHERE CP.PRODUCT_GROUP = CD.PRODUCT_GROUP
AND CP.PRODUCT::VARCHAR = CD.PRODUCT
AND CONTRACT_MONTH = #{obj.MONTH}
<if test="Year != null and '' != Year">
AND CONTRACT_YEAR = #{Year}
</if>
) AS CONTRACT_COST_MONTH_${obj.MONTH}
,(
SELECT
SUM(RELEASE_CNT)
FROM
RELEASE_DATA RD
WHERE CP.PRODUCT::VARCHAR = RD.PRODUCT
AND RELEASE_MONTH = #{obj.MONTH}
<if test="Year != null and '' != Year">
AND RELEASE_YEAR = #{Year}
</if>
) AS RELEASE_CNT_MONTH_${obj.MONTH}
</foreach>
,(
SELECT
SUM(CONTRACT_CNT)
FROM
CONTRACT_DATA CD
WHERE CP.PRODUCT_GROUP = CD.PRODUCT_GROUP
AND CP.PRODUCT::VARCHAR = CD.PRODUCT
<if test="Year != null and '' != Year">
AND CONTRACT_YEAR = #{Year}
</if>
) AS CONTRACT_CNT_YEAR
,(
SELECT
SUM(CONTRACT_COST)
FROM
CONTRACT_DATA CD
WHERE CP.PRODUCT_GROUP = CD.PRODUCT_GROUP
AND CP.PRODUCT::VARCHAR = CD.PRODUCT
<if test="Year != null and '' != Year">
AND CONTRACT_YEAR = #{Year}
</if>
) AS CONTRACT_COST_YEAR
,(
SELECT
SUM(RELEASE_CNT)
FROM
RELEASE_DATA RD
WHERE CP.PRODUCT::VARCHAR = RD.PRODUCT
<if test="Year != null and '' != Year">
AND RELEASE_YEAR = #{Year}
</if>
) AS RELEASE_CNT_YEAR
FROM
TARGET_PRODUCT CP
WHERE 1=1
)
SELECT
A.*,
ROW_NUMBER() OVER (PARTITION BY PRODUCT_GROUP ORDER BY PRODUCT_GROUP,PRODUCT_CODE) AS RNUM
FROM(
SELECT
FD.PRODUCT_GROUP
,FD.PRODUCT
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CODE_ID = FD.PRODUCT_GROUP) AS CODE_NAME
,(SELECT PRODUCT_CODE FROM TARGET_PRODUCT TP WHERE TP.PRODUCT_GROUP = FD.PRODUCT_GROUP AND TP.PRODUCT = FD.PRODUCT) AS PRODUCT_CODE
<foreach collection="monthList" item="obj">
,SUM(FD.CONTRACT_CNT_MONTH_${obj.MONTH}) AS CONTRACT_CNT_MONTH_${obj.MONTH}
,SUM(FD.CONTRACT_COST_MONTH_${obj.MONTH}) AS CONTRACT_COST_MONTH_${obj.MONTH}
,SUM(FD.RELEASE_CNT_MONTH_${obj.MONTH}) AS RELEASE_CNT_MONTH_${obj.MONTH}
,CAST(DATE_TRUNC('MONTH', TO_DATE('${Year}-${obj.MONTH}','YYYY-MM')) AS DATE) AS MONTH_FIRST_DAY_${obj.MONTH}
,(DATE_TRUNC('MONTH', TO_DATE('${Year}-${obj.MONTH}','YYYY-MM')) + INTERVAL '1 MONTH - 1 DAY')::DATE AS MONTH_LAST_DAY_${obj.MONTH}
</foreach>
,SUM(FD.CONTRACT_CNT_YEAR) AS CONTRACT_CNT_YEAR
,SUM(FD.CONTRACT_COST_YEAR) AS CONTRACT_COST_YEAR
,SUM(FD.RELEASE_CNT_YEAR) AS RELEASE_CNT_YEAR
,#{Year} AS TARGET_YEAR
FROM FINAL_DATA FD
GROUP BY ROLLUP (
(
FD.PRODUCT_GROUP
,FD.PRODUCT
)
)
) A
WHERE 1=1
AND A.contract_cnt_year IS NOT NULL OR A.release_cnt_year IS NOT NULL
</select>
<update id="deleteContractMngInfo" parameterType="map">
DELETE FROM CONTRACT_MGMT WHERE OBJID = #{objId}
</update>
<update id="deletesupplyMngInfo" parameterType="map">
DELETE FROM SUPPLY_MNG WHERE OBJID = #{objId}::NUMERIC
</update>
<select id="getContractOptionList" parameterType="map" resultType="map">
SELECT
OPTION_OBJID::VARCHAR
,OPTION_QTY::VARCHAR
,PRICE::VARCHAR
,NOTE
,T1.HIGH_CD
,T1.MID_CD
,T1.LOW_CD
FROM contract_mgmt_option AS CMO LEFT OUTER JOIN (SELECT
OBJID --OBJID
,OPTION_NO --옵션번호(자동)
,OPTION_NAME --옵션이름
,OPTION_NAME_ENG --옵션이름 영문
,STD_CODE --표준코드
,OPTION_TYPE --옵셥타입
,CASE WHEN CATEGORY='mid'
THEN (SELECT OPTION_NAME FROM option_mng AS O WHERE O.OBJID::VARCHAR = T.PARENT_OBJID)
WHEN CATEGORY='low'
THEN (SELECT OPTION_NAME FROM option_mng AS O WHERE O.OBJID::VARCHAR = (SELECT PARENT_OBJID FROM option_mng AS O WHERE O.OBJID::VARCHAR = T.PARENT_OBJID))
WHEN CATEGORY='high'
THEN OPTION_NAME
ELSE '' END AS HIGH_NAME
,CASE WHEN CATEGORY='mid'
THEN (SELECT OBJID::varchar FROM option_mng AS O WHERE O.OBJID::VARCHAR = T.PARENT_OBJID)
WHEN CATEGORY='low'
THEN (SELECT OBJID::varchar FROM option_mng AS O WHERE O.OBJID::VARCHAR = (SELECT PARENT_OBJID FROM option_mng AS O WHERE O.OBJID::VARCHAR = T.PARENT_OBJID))
WHEN CATEGORY='high'
THEN OBJID::varchar
ELSE '' END AS HIGH_CD
,CASE WHEN CATEGORY='low'
THEN (SELECT OPTION_NAME FROM option_mng AS O WHERE O.OBJID::VARCHAR = T.PARENT_OBJID)
WHEN CATEGORY='mid'
THEN OPTION_NAME
ELSE '' END AS MID_NAME
,CASE WHEN CATEGORY='low'
THEN (SELECT OBJID::VARCHAR FROM option_mng AS O WHERE O.OBJID::VARCHAR = T.PARENT_OBJID)
WHEN CATEGORY='mid'
THEN OBJID::VARCHAR
ELSE '' END AS MID_CD
,CASE WHEN CATEGORY='low'
THEN OPTION_NAME
ELSE '' END AS LOW_NAME
,CASE WHEN CATEGORY='low'
THEN OBJID::VARCHAR
ELSE '' END AS LOW_CD
FROM option_mng AS T) AS T1
ON CMO.OPTION_OBJID::NUMERIC = T1.OBJID::NUMERIC
WHERE CONTRACT_OBJID::NUMERIC = #{objId}::NUMERIC
</select>
<!-- 공급업체에 해당하는 정보 목록 Count를 가져온다. -->
<select id="getSUPPLYInfoListCnt" 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
OBJID
,SUPPLY_CODE
,CODE_NAME(SUPPLY_CODE) AS SUPPLY_CODE_NAME
,CODE_NAME(AREA_CD) AS AREA_CD_NAME
,AREA_CD
,BUS_REG_NO
,OFFICE_NO
,EMAIL
,SUPPLY_NAME
,REG_NO
,SUPPLY_ADDRESS
,SUPPLY_BUSNAME
,SUPPLY_STOCKNAME
,SUPPLY_TEL_NO
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = REG_ID) WRITER_NAME
,(SELECT DEPT_NAME FROM USER_INFO WHERE USER_ID = REG_ID) WRITER_DEPT
,REG_ID
,TO_CHAR(REG_DATE,'YYYY-MM-DD') REGDATE
,STATUS
,case UPPER(STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else STATUS
end STATUS_STR
FROM SUPPLY_MNG
WHERE 1=1
) TBL WHERE 1=1
<if test="supply_name != null and supply_name != ''">
AND UPPER(SUPPLY_NAME) LIKE UPPER('%${supply_name}%')
</if>
<if test="searchStatus != null and searchStatus != ''">
AND UPPER(STATUS) LIKE UPPER('%${searchStatus}%')
</if>
<if test="area_cd != null and area_cd != ''">
AND AREA_CD =#{area_cd}
</if>
<if test="supply_code != null and supply_code != ''">
AND SUPPLY_CODE =#{supply_code}
</if>
) TBL WHERE 1=1
)A WHERE 1=1
</select>
<!-- 공급업체에 해당하는 정보 목록을 가져온다. -->
<select id="getSUPPLYInfoList" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT TBL.*, ROW_NUMBER() OVER(ORDER BY CUS_NO DESC) RNUM
FROM(
SELECT TBL.*
FROM(
SELECT
OBJID
,SUPPLY_CODE
,CODE_NAME(SUPPLY_CODE) AS SUPPLY_CODE_NAME
,CODE_NAME(AREA_CD) AS AREA_CD_NAME
,AREA_CD
,BUS_REG_NO
,OFFICE_NO
,EMAIL
,SUPPLY_NAME
,REG_NO
,REGEXP_REPLACE(REG_NO, '([0-9]{7})', '*******') AS REG_NO2
,SUPPLY_ADDRESS
,SUPPLY_BUSNAME
,SUPPLY_STOCKNAME
,SUPPLY_TEL_NO
,REG_ID
,TO_CHAR(REG_DATE,'YYYY-MM-DD') REGDATE
,STATUS
,CHARGE_USER_NAME
,case UPPER(STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else STATUS
end STATUS_STR
,CUS_NO
FROM SUPPLY_MNG
WHERE 1=1
) TBL WHERE 1=1
<if test="supply_name != null and supply_name != ''">
AND UPPER(SUPPLY_NAME) LIKE UPPER('%${supply_name}%')
</if>
<if test="searchStatus != null and searchStatus != ''">
AND UPPER(STATUS) LIKE UPPER('%${searchStatus}%')
</if>
<if test="area_cd != null and area_cd != ''">
AND AREA_CD =#{area_cd}
</if>
<if test="supply_code != null and supply_code != ''">
AND SUPPLY_CODE =#{supply_code}
</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="supplyMngGridPagingList" parameterType="map" resultType="map">
SELECT TBL.*
FROM(
SELECT
OBJID
,SUPPLY_CODE
,CODE_NAME(SUPPLY_CODE) AS SUPPLY_CODE_NAME
,CODE_NAME(AREA_CD) AS AREA_CD_NAME
,AREA_CD
,BUS_REG_NO
,OFFICE_NO
,EMAIL
,SUPPLY_NAME
,REG_NO
,REGEXP_REPLACE(REG_NO, '([0-9]{7})', '*******') AS REG_NO2
,SUPPLY_ADDRESS
,SUPPLY_BUSNAME
,SUPPLY_STOCKNAME
,SUPPLY_TEL_NO
,REG_ID
,TO_CHAR(REG_DATE,'YYYY-MM-DD') REGDATE
,STATUS
,CHARGE_USER_NAME
,case UPPER(STATUS)
when 'ACTIVE' then '활성화'
when 'INACTIVE' then '비활성화'
else STATUS
end STATUS_STR
,CUS_NO
FROM SUPPLY_MNG
WHERE 1=1
) TBL WHERE 1=1
<if test="supply_name != null and supply_name != ''">
AND UPPER(SUPPLY_NAME) LIKE UPPER('%${supply_name}%')
</if>
<if test="searchStatus != null and searchStatus != ''">
AND UPPER(STATUS) LIKE UPPER('%${searchStatus}%')
</if>
<if test="area_cd != null and area_cd != ''">
AND AREA_CD =#{area_cd}
</if>
<if test="supply_code != null and supply_code != ''">
AND SUPPLY_CODE =#{supply_code}
</if>
</select>
<!-- 공급업체 단건 정보를 가져온다. -->
<select id="getSupMngInfo" parameterType="map" resultType="map">
SELECT
OBJID
,SUPPLY_CODE
,SUPPLY_NAME
,REG_NO
,REGEXP_REPLACE(REG_NO, '([0-9]{7})', '*******') AS REG_NO2
,SUPPLY_ADDRESS
,SUPPLY_BUSNAME
,SUPPLY_STOCKNAME
,SUPPLY_TEL_NO
,SUPPLY_FAX_NO
,CHARGE_USER_NAME
,PAYMENT_METHOD
,REG_ID
,REG_DATE
,STATUS
,AREA_CD
,BUS_REG_NO
,OFFICE_NO
,EMAIL
FROM SUPPLY_MNG
WHERE OBJID = #{objid}::numeric
</select>
<!-- //공급업체 등록 및 저장 -->
<update id="mergeSupMgmtInfo" parameterType="map">
INSERT INTO SUPPLY_MNG
(
OBJID
,SUPPLY_CODE
,SUPPLY_NAME
,REG_NO
,SUPPLY_ADDRESS
,SUPPLY_BUSNAME
,SUPPLY_STOCKNAME
,SUPPLY_TEL_NO
,SUPPLY_FAX_NO
,CHARGE_USER_NAME
,PAYMENT_METHOD
,REG_ID
,REG_DATE
,STATUS
,AREA_CD
,BUS_REG_NO
,OFFICE_NO
,EMAIL
,CUS_NO
)
VALUES
(
#{objid }::NUMERIC
,#{supply_code}
,#{supply_name }
,#{reg_no }
,#{supply_address }
,#{supply_busname }
,#{supply_stockname }
,#{supply_tel_no }
,#{supply_fax_no }
,#{charge_user_name }
,#{payment_method }
,#{reg_id }
,now()
,'active'
,#{area_cd }
,#{bus_reg_no }
,#{office_no }
,#{email }
,(SELECT 'CUS-' || LPAD((SELECT MAX(SUBSTR(CUS_NO,5,8))::INTEGER+1 FROM SUPPLY_MNG)::VARCHAR,4,'0'))
)
ON CONFLICT (OBJID) DO
UPDATE
SET
SUPPLY_CODE =#{supply_code }
,SUPPLY_NAME =#{supply_name }
,REG_NO =#{reg_no }
,SUPPLY_ADDRESS =#{supply_address }
,SUPPLY_BUSNAME =#{supply_busname }
,SUPPLY_STOCKNAME =#{supply_stockname }
,SUPPLY_TEL_NO =#{supply_tel_no }
,SUPPLY_FAX_NO =#{supply_fax_no }
,CHARGE_USER_NAME =#{charge_user_name }
,PAYMENT_METHOD =#{payment_method }
,REG_ID =#{reg_id }
,AREA_CD =#{area_cd }
,BUS_REG_NO =#{bus_reg_no }
,OFFICE_NO =#{office_no }
,EMAIL =#{email }
</update>
<!-- 상담내역 리스트 -->
<select id="counselingListCnt" parameterType="map" resultType="map">
SELECT
CEIL(CAST(TOTAL_CNT AS FLOAT)/#{COUNT_PER_PAGE})::numeric::integer as MAX_PAGE_SIZE
,TOTAL_CNT::integer
FROM (
SELECT COUNT(1)::float TOTAL_CNT
FROM COUNSELINGMGMT T
WHERE 1=1
<if test="grade !=null and grade !=''">
AND grade = #{grade}
</if>
<if test="counseling_area1 !=null and counseling_area1 !=''">
AND counseling_area1 = #{counseling_area1}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(TO_CHAR(TO_DATE(REG_DATE,'YYYY-MM-DD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(TO_CHAR(TO_DATE(REG_DATE,'YYYY-MM-DD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
<if test="industry != null and !''.equals(industry)">
AND industry = #{industry}
</if>
<if test="counsel_user_id != null and !''.equals(counsel_user_id)">
AND reg_user = #{counsel_user_id}
</if>
<if test="client_name != null and !''.equals(client_name)">
AND client_name LIKE UPPER('%${client_name}%')
</if>
) AS T
WHERE 1=1
</select>
<!-- //상담내역 리스트 -->
<select id="counselingList" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT
ROW_NUMBER() OVER (ORDER BY REG_DATE DESC) AS RNUM
,OBJID
,REG_DATE
,CODE_NAME(TRANS_TYPE) AS TRANS_TYPE_NAME
,TRANS_TYPE
,COUNSELING_CATEGORY
,CODE_NAME(COUNSELING_CATEGORY) AS COUNSELING_CATEGORY_NAME
,COUNSELING_TYPE
,CODE_NAME(COUNSELING_TYPE) AS COUNSELING_TYPE_NAME
,COUNSELING_AREA1
,CODE_NAME(COUNSELING_AREA1) AS COUNSELING_AREA1_NAME
,COUNSELING_AREA2
,CODE_NAME(COUNSELING_AREA2) AS COUNSELING_AREA2_NAME
,ZIPCODE
,ADDRESS
,CLIENT_NAME
,PHONE
,CUSTOMER_NAME
,GRADE
,CODE_NAME(GRADE) AS GRADE_NAME
,INDUSTRY
,CODE_NAME(INDUSTRY) AS INDUSTRY_NAME
,EQUIPMENT_YN
,QTY
,REP_MODEL
,NOTE
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = REG_USER) AS REG_USER_NAME
,REG_USER
,COUNT
FROM COUNSELINGMGMT
WHERE 1=1
<if test="grade !=null and grade !=''">
AND grade = #{grade}
</if>
<if test="counseling_area1 !=null and counseling_area1 !=''">
AND counseling_area1 = #{counseling_area1}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(TO_CHAR(TO_DATE(REG_DATE,'YYYY-MM-DD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(TO_CHAR(TO_DATE(REG_DATE,'YYYY-MM-DD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
<if test="industry != null and !''.equals(industry)">
AND industry = #{industry}
</if>
<if test="counsel_user_id != null and !''.equals(counsel_user_id)">
AND reg_user = #{counsel_user_id}
</if>
<if test="client_name != null and !''.equals(client_name)">
AND client_name LIKE UPPER('%${client_name}%')
</if>
)AS T
WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND T.RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND T.RNUM >= #{PAGE_START} ]]>
</if>
</select>
<select id="getcounselingMgmtInfo" parameterType="map" resultType="map">
SELECT
REG_DATE
,TRANS_TYPE
,COUNSELING_CATEGORY
,COUNSELING_TYPE
,COUNSELING_AREA1
,COUNSELING_AREA2
,ZIPCODE
,ADDRESS
,CLIENT_NAME
,PHONE
,CUSTOMER_NAME
,GRADE
,INDUSTRY
,EQUIPMENT_YN
,QTY
,REP_MODEL
,NOTE
,REG_USER
,COUNT
,PARENT_SEQ
FROM COUNSELINGMGMT A
WHERE A.OBJID = #{OBJID}
</select>
<insert id="savecounselingInfo" parameterType="map">
INSERT INTO COUNSELINGMGMT
(
OBJID
,REG_DATE
,TRANS_TYPE
,COUNSELING_CATEGORY
,COUNSELING_TYPE
,COUNSELING_AREA1
,COUNSELING_AREA2
,ZIPCODE
,ADDRESS
,CLIENT_NAME
,PHONE
,CUSTOMER_NAME
,GRADE
,INDUSTRY
,EQUIPMENT_YN
,QTY
,REP_MODEL
,NOTE
,REG_USER
,COUNT
,PARENT_SEQ
)
VALUES
(
#{OBJID}
,#{reg_date}
,#{trans_type}
,#{counseling_category}
,#{counseling_type}
,#{counseling_area1}
,#{counseling_area2}
,#{zipcode}
,#{address}
,#{client_name}
,#{phone}
,#{customer_name}
,#{grade}
,#{industry}
,#{equipment_yn}
,#{qty}
,#{rep_model}
,#{note}
,#{userId}
,#{count}
,#{parent_seq}
)
ON CONFLICT (OBJID) DO
UPDATE
SET
REG_DATE = #{reg_date}
,TRANS_TYPE = #{trans_type}
,COUNSELING_CATEGORY = #{counseling_category}
,COUNSELING_TYPE = #{counseling_type}
,COUNSELING_AREA1 = #{counseling_area1}
,COUNSELING_AREA2 = #{counseling_area2}
,ZIPCODE = #{zipcode}
,ADDRESS = #{address}
,CLIENT_NAME = #{client_name}
,PHONE = #{phone}
,CUSTOMER_NAME = #{customer_name}
,GRADE = #{grade}
,INDUSTRY = #{industry}
,EQUIPMENT_YN = #{equipment_yn}
,QTY = #{qty}
,REP_MODEL = #{rep_model}
,NOTE = #{note}
</insert>
<!-- 계약관리 -->
<select id="estimateListCnt" parameterType="map" resultType="map">
SELECT
CEIL(CAST(TOTAL_CNT AS FLOAT)/#{COUNT_PER_PAGE})::numeric::integer as MAX_PAGE_SIZE
,TOTAL_CNT::integer
FROM (
SELECT COUNT(1)::float TOTAL_CNT
FROM
( SELECT
OBJID::VARCHAR
,CUSTOMER_OBJID
,CATEGORY_CD
,PRODUCT_GROUP
,PRODUCT
,PRODUCT_STD
,QTY
,WARRANTY
,PRODUCT_PRICE
,OTHER_PRICE
,TOTAL_PRICE
,CONTRACT_USER_ID
,CONTRACT_DATE
,CONTRACT_PHONE
,CONTRACT_EMAIL
,CONTRACT_OFFICE_NO
,CONTRACT_FAX_NO
,EST_RELEASE_DATE
,REGDATE
,WRITER
,ESTIMATE_NO
,CONTRACT_PRODUCT_PRICE
,SALE
,FINAL_TOTAL_PRICE
,CONTRACT_TYPE
,NOTE
,CUS_REQUEST_DATE
,DELIVERY_PLACE
,PRODUCT_CODE
FROM ESTIMATE_MGMT ) AS T
WHERE 1=1
<if test="PRODUCT_CATEGORY !=null and PRODUCT_CATEGORY != '' ">
AND PRODUCT_GROUP = #{PRODUCT_CATEGORY}
</if>
<if test="PRODUCT !=null and PRODUCT != '' ">
AND PRODUCT = #{PRODUCT}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
<if test="type_cd !=null and type_cd != '' ">
AND SUPPLY_CODE = #{type_cd}
</if>
<if test="customer_cd != null and customer_cd !='' ">
AND CUSTOMER_OBJID = #{customer_cd}
</if>
<if test="area_cd !=null and area_cd !=''">
AND AREA_CD = #{area_cd}
</if>
<if test="product_cd !=null and product_cd !=''">
AND CATEGORY_CD = #{product_cd}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYYMMDD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYYMMDD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
<if test="status_cd != null and !''.equals(status_cd)">
AND CONTRACT_STATUS_CODE = #{status_cd}
</if>
<if test="product_code != null and !''.equals(product_code)">
AND PRODUCT = #{product_code}
</if>
) AS T
WHERE 1=1
</select>
<!-- //계약관리 리스트 -->
<select id="estimateList" parameterType="map" resultType="map">
SELECT *
FROM(
SELECT
CONTRACT_MGMT.*
,TO_DATE(TO_CHAR(TO_DATE(CONTRACT_MGMT.EST_RELEASE_DATE ,'YYYYMMDD'),'YYYY-MM-DD'),'YYYY-MM-DD') AS TO_DATE_EST_RELEASE_DATE
,TO_DATE(TO_CHAR(TO_DATE(CONTRACT_MGMT.CONTRACT_DATE ,'YYYYMMDD'),'YYYY-MM-DD'),'YYYY-MM-DD') AS TO_DATE_CONTRACT_DATE
,ROW_NUMBER() OVER (ORDER BY ESTIMATE_NO DESC) AS RNUM
FROM
( SELECT T.OBJID::VARCHAR
,T.CUSTOMER_OBJID
,ESTIMATE_NO
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS SUPPLY_NAME
,(SELECT CODE_NAME(AREA_CD) FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS AREA_CD_NAME
,(SELECT CHARGE_USER_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CHARGE_USER_NAME
,(SELECT REG_ID FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS REG_ID
,(SELECT BUS_REG_NO FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS BUS_REG_NO
,(SELECT REG_NO FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS REG_NO
,T.CATEGORY_CD
,T.PRODUCT_GROUP AS PRODUCT_GROUP
,T.PRODUCT AS PRODUCT
,CODE_NAME(PRODUCT_GROUP) AS PRODUCT_GROUP_NAME
,(SELECT PRODUCT_NAME FROM PRODUCT_MGMT AS O WHERE O.OBJID::VARCHAR = T.PRODUCT) AS PRODUCT_NAME
,QTY
,WARRANTY
,CONTRACT_PRODUCT_PRICE AS CONTRACT_PRODUCT_PRICE
,EST_RELEASE_DATE AS EST_RELEASE_DATE
,TOTAL_PRICE
,FINAL_TOTAL_PRICE
,CONTRACT_DATE
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.CONTRACT_USER_ID ) AS CONTRACT_USER_NAME
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO WHERE TARGET_OBJID = T.OBJID AND DOC_TYPE='estimate01' AND UPPER(STATUS) = 'ACTIVE') AS CU01_CNT
,T.REGDATE
,PRODUCT_CODE
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = T.STATUS) AS STATUS_NAME
,STATUS
FROM ESTIMATE_MGMT AS T) AS CONTRACT_MGMT
WHERE 1=1
<if test="PRODUCT_CATEGORY !=null and PRODUCT_CATEGORY != '' ">
AND PRODUCT_GROUP = #{PRODUCT_CATEGORY}
</if>
<if test="PRODUCT !=null and PRODUCT != '' ">
AND PRODUCT = #{PRODUCT}
</if>
<if test="Year !=null and Year != '' ">
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
</if>
<if test="type_cd !=null and type_cd != '' ">
AND SUPPLY_CODE = #{type_cd}
</if>
<if test="customer_cd != null and customer_cd !='' ">
AND CUSTOMER_OBJID = #{customer_cd}
</if>
<if test="area_cd !=null and area_cd !=''">
AND AREA_CD = #{area_cd}
</if>
<if test="product_cd !=null and product_cd !=''">
AND CATEGORY_CD = #{product_cd}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYYMMDD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYYMMDD'),'YYYY-MM-DD'),'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
<if test="status_cd != null and !''.equals(status_cd)">
AND STATUS = #{status_cd}
</if>
<if test="product_code != null and !''.equals(product_code)">
AND PRODUCT = #{product_code}
</if>
)AS T
WHERE 1=1
<if test="PAGE_END != null and PAGE_END !='' and actionType != 'excel' ">
<![CDATA[ AND T.RNUM <= #{PAGE_END} ]]>
</if>
<if test="PAGE_START != null and PAGE_STRART!='' and actionType != 'excel' ">
<![CDATA[ AND T.RNUM >= #{PAGE_START} ]]>
</if>
</select>
<select id="getEstimateMgmtInfo" parameterType="map" resultType="map">
SELECT
OBJID::NUMERIC
,CUSTOMER_OBJID
,CATEGORY_CD
,PRODUCT_GROUP
,PRODUCT
,PRODUCT_STD
,QTY
,WARRANTY
,PRODUCT_PRICE
,OTHER_PRICE
,TOTAL_PRICE
,CONTRACT_USER_ID
,CASE WHEN CONTRACT_DATE IS NOT NULL
THEN TO_CHAR(TO_DATE(CONTRACT_DATE, 'YYYYMMDD'),'YYYY-MM-DD')
ELSE NULL
END AS CONTRACT_DATE
,CONTRACT_PHONE
,CONTRACT_EMAIL
,CONTRACT_OFFICE_NO
,CONTRACT_FAX_NO
,CASE WHEN EST_RELEASE_DATE IS NOT NULL
THEN TO_CHAR(TO_DATE(EST_RELEASE_DATE, 'YYYYMMDD'),'YYYY-MM-DD')
ELSE NULL
END AS EST_RELEASE_DATE
,REGDATE
,WRITER
,ESTIMATE_NO
,CONTRACT_PRODUCT_PRICE
,SALE
,FINAL_TOTAL_PRICE
,CONTRACT_TYPE
,NOTE
,CASE WHEN CUS_REQUEST_DATE IS NOT NULL
THEN TO_CHAR(TO_DATE(CUS_REQUEST_DATE, 'YYYYMMDD'),'YYYY-MM-DD')
ELSE NULL
END AS CUS_REQUEST_DATE
,DELIVERY_PLACE
,PRODUCT_CODE
FROM ESTIMATE_MGMT A
WHERE A.OBJID = #{objId}::NUMERIC
</select>
<update id="saveEstimateMgmtInfo" parameterType="map">
INSERT INTO ESTIMATE_MGMT
(
OBJID
,CUSTOMER_OBJID
,CATEGORY_CD
,PRODUCT_GROUP
,PRODUCT
,PRODUCT_STD
,QTY
,WARRANTY
<if test="product_price != null and !''.equals(product_price)">
,PRODUCT_PRICE
</if>
<if test="other_price != null and !''.equals(other_price)">
,OTHER_PRICE
</if>
<if test="total_price != null and !''.equals(total_price)">
,TOTAL_PRICE
</if>
,CONTRACT_USER_ID
,CONTRACT_DATE
,CONTRACT_PHONE
,CONTRACT_EMAIL
,CONTRACT_OFFICE_NO
,CONTRACT_FAX_NO
<if test="est_release_date != null and !''.equals(est_release_date)">
,EST_RELEASE_DATE
</if>
,REGDATE
,WRITER
,ESTIMATE_NO
<if test="contract_product_price != null and !''.equals(contract_product_price)">
,CONTRACT_PRODUCT_PRICE
</if>
,SALE
,FINAL_TOTAL_PRICE
,CONTRACT_TYPE
,NOTE
<if test="cus_request_date != null and !''.equals(cus_request_date)">
,CUS_REQUEST_DATE
</if>
,DELIVERY_PLACE
,PRODUCT_CODE
,STATUS
)
VALUES
(
#{objId }::NUMERIC
, #{customer_objid }
, #{category_cd }
, #{product_group }
, #{product }
, #{product_std }
, #{qty }
, #{warranty }
<if test="product_price != null and !''.equals(product_price)">
, #{product_price }::NUMERIC
</if>
<if test="other_price != null and !''.equals(other_price)">
, #{other_price }::NUMERIC
</if>
<if test="total_price != null and !''.equals(total_price)">
, #{total_price }::NUMERIC
</if>
, #{contract_user_id }
, #{contract_date }
, #{contract_phone }
, #{contract_email }
, #{contract_office_no}
, #{contract_fax_no }
<if test="est_release_date != null and !''.equals(est_release_date)">
,#{est_release_date}
</if>
, NOW()
, #{userId}
,(SELECT TO_CHAR(NOW(),'yy')::VARCHAR ||'E-'||LPAD((SELECT NEXTVAL('estimate_mgmt_seq'))::VARCHAR ,4,'0'))
<if test="contract_product_price != null and !''.equals(contract_product_price)">
,#{contract_product_price}::NUMERIC
</if>
,#{sale}
,#{final_total_price}::NUMERIC
,#{contract_type}
,#{note}
<if test="cus_request_date != null and !''.equals(cus_request_date)">
,#{cus_request_date}
</if>
,#{delivery_place}
,#{product_code}
,'0000922'
)
ON CONFLICT (OBJID) DO
UPDATE
SET
CUSTOMER_OBJID = #{customer_objid }
,CATEGORY_CD = #{category_cd }
,PRODUCT_GROUP = #{product_group }
,PRODUCT = #{product }
,PRODUCT_STD = #{product_std }
,QTY = #{qty }
,WARRANTY = #{warranty }
<if test="product_price != null and !''.equals(product_price)">
,PRODUCT_PRICE = #{product_price }::NUMERIC
</if>
<if test="option_price != null and !''.equals(option_price)">
,OPTION_PRICE = #{option_price }::NUMERIC
</if>
<if test="other_price != null and !''.equals(other_price)">
,OTHER_PRICE = #{other_price }::NUMERIC
</if>
<if test="total_price != null and !''.equals(total_price)">
,TOTAL_PRICE = #{total_price }::NUMERIC
</if>
,CONTRACT_USER_ID = #{contract_user_id }
,CONTRACT_DATE = #{contract_date }
,CONTRACT_PHONE = #{contract_phone }
,CONTRACT_EMAIL = #{contract_email }
,CONTRACT_OFFICE_NO = #{contract_office_no}
,CONTRACT_FAX_NO = #{contract_fax_no }
<if test="est_release_date != null and !''.equals(est_release_date)">
,EST_RELEASE_DATE = #{est_release_date}
</if>
<if test="contract_product_price != null and !''.equals(contract_product_price)">
,CONTRACT_PRODUCT_PRICE = #{contract_product_price}::NUMERIC
</if>
,SALE = #{sale}
,FINAL_TOTAL_PRICE = #{final_total_price}::NUMERIC
,CONTRACT_TYPE = #{contract_type}
,NOTE = #{note}
<if test="cus_request_date != null and !''.equals(cus_request_date)">
,CUS_REQUEST_DATE = #{cus_request_date}
</if>
,DELIVERY_PLACE = #{delivery_place}
,PRODUCT_CODE = #{product_code}
</update>
<delete id="deleteEstimateMgmtInfo" parameterType="map">
DELETE FROM ESTIMATE_MGMT WHERE OBJID = #{objId}::NUMERIC
</delete>
<update id="updateEstimateMgmtInfo" parameterType="map">
UPDATE ESTIMATE_MGMT
SET STATUS = '0000923'
WHERE OBJID = #{objId}::NUMERIC
</update>
<insert id="createEstimateMgmtInfo" parameterType="map">
INSERT INTO CONTRACT_MGMT
(
OBJID
,CUSTOMER_OBJID
,CATEGORY_CD
,PRODUCT_GROUP
,PRODUCT
,PRODUCT_STD
,QTY
,WARRANTY
,PRODUCT_PRICE
,OTHER_PRICE
,TOTAL_PRICE
,CONTRACT_USER_ID
,CONTRACT_DATE
,CONTRACT_PHONE
,CONTRACT_EMAIL
,CONTRACT_OFFICE_NO
,CONTRACT_FAX_NO
,EST_RELEASE_DATE
,REGDATE
,WRITER
,CONTRACT_NO
,CONTRACT_PRODUCT_PRICE
,SALE
,FINAL_TOTAL_PRICE
,CONTRACT_TYPE
,NOTE
,CUS_REQUEST_DATE
,DELIVERY_PLACE
,PRODUCT_CODE
)
(
SELECT
#{contractobjid}::NUMERIC
,CUSTOMER_OBJID
,CATEGORY_CD
,PRODUCT_GROUP
,PRODUCT
,PRODUCT_STD
,QTY
,WARRANTY
,PRODUCT_PRICE
,OTHER_PRICE
,TOTAL_PRICE
,CONTRACT_USER_ID
,CONTRACT_DATE
,CONTRACT_PHONE
,CONTRACT_EMAIL
,CONTRACT_OFFICE_NO
,CONTRACT_FAX_NO
,EST_RELEASE_DATE
,REGDATE
,WRITER
,(SELECT TO_CHAR(NOW(),'yy')::VARCHAR ||'C-'||LPAD((SELECT NEXTVAL('contract_mgmt_seq'))::VARCHAR ,4,'0'))
,CONTRACT_PRODUCT_PRICE
,SALE
,FINAL_TOTAL_PRICE
,CONTRACT_TYPE
,NOTE
,CUS_REQUEST_DATE
,DELIVERY_PLACE
,PRODUCT_CODE
FROM ESTIMATE_MGMT
WHERE OBJID = #{objId}::NUMERIC
)
</insert>
<select id="getProjectCnt" parameterType="map" resultType="map">
SELECT CONTRACT_OBJID
FROM PMS_WBS_TASK
WHERE CONTRACT_OBJID = #{objId}
LIMIT 1
</select>
<!-- //계약정보를 받아 프로젝트 최초저장 -->
<insert id="insertProjectTask" parameterType="map">
INSERT INTO
PMS_WBS_TASK (
OBJID
,CONTRACT_OBJID
,TASK_NAME
,TASK_SEQ
,UNIT_NO
,WRITER
)
(SELECT HASHTEXT(REPLACE(GEN_RANDOM_UUID()::VARCHAR,'-',''))::VARCHAR
,#{OBJID}
,T.TASK_NAME
,T.TASK_SEQ
,T.UNIT_NO
,#{writer}
FROM PMS_WBS_TASK_STANDARD AS T LEFT JOIN PMS_WBS_TEMPLATE AS T1
ON T.PARENT_OBJID = T1.OBJID
WHERE T1.TITLE=#{mechanical_type}
<!-- WHERE T1.OBJID=#{mechanical_type} -->
<!-- WHERE T1.PRODUCT_OBJID=#{product} -->
)
</insert>
<!-- //프로젝트 생성시 setupwbs 최초생성 -->
<insert id="insertProjectSetupTask" parameterType="map">
INSERT INTO
SETUP_WBS_TASK
(
OBJID
,CONTRACT_OBJID
,PARENT_OBJID
,TASK_CATEGORY
,TASK_NAME
,STANDARD_OBJID
,TASK_SEQ
,PROJ_STEP
)
(SELECT
HASHTEXT(REPLACE(GEN_RANDOM_UUID()::VARCHAR,'-',''))::VARCHAR
,#{OBJID}
,T.PARENT_OBJID
,T.TASK_CATEGORY
,T.TASK_NAME
,T.OBJID
,T.TASK_SEQ
,T.PROJ_STEP
FROM
SETUP_WBS_TASK_STANDARD AS T
)
</insert>
<select id="getContractDashBoard_new" parameterType="map" resultType="map">
SELECT (CASE WHEN GROUPING(cc.code_id) = 1 THEN '소계' ELSE cc.CODE_ID END) AS CODE_ID
,CC.CODE_NAME
,SUM(CM.PRICE::NUMERIC) AS TOTAL_PRICE
,SUM(CM.QTY ::NUMERIC) AS TOTAL_CM
,SUM(CASE WHEN CM.MM = '01' THEN CM.PRICE::NUMERIC ELSE NULL END) AS M01_PRICE
,SUM(CASE WHEN CM.MM = '01' THEN CM.QTY ::NUMERIC ELSE NULL END) AS M01_CM
,SUM(CASE WHEN RM.MM = '01' THEN RM.QTY ::NUMERIC ELSE NULL END) AS M01_RM
,SUM(CASE WHEN CM.MM = '02' THEN CM.PRICE::NUMERIC ELSE NULL END) AS M02_PRICE
,SUM(CASE WHEN CM.MM = '02' THEN CM.QTY ::NUMERIC ELSE NULL END) AS M02_CM
,SUM(CASE WHEN RM.MM = '02' THEN RM.QTY ::NUMERIC ELSE NULL END) AS M02_RM
,SUM(CASE WHEN CM.MM = '03' THEN CM.PRICE::NUMERIC ELSE NULL END) AS M03_PRICE
,SUM(CASE WHEN CM.MM = '03' THEN CM.QTY ::NUMERIC ELSE NULL END) AS M03_CM
,SUM(CASE WHEN RM.MM = '03' THEN RM.QTY ::NUMERIC ELSE NULL END) AS M03_RM
,SUM(CASE WHEN CM.MM = '04' THEN CM.PRICE::NUMERIC ELSE NULL END) AS M04_PRICE
,SUM(CASE WHEN CM.MM = '04' THEN CM.QTY ::NUMERIC ELSE NULL END) AS M04_CM
,SUM(CASE WHEN RM.MM = '04' THEN RM.QTY ::NUMERIC ELSE NULL END) AS M04_RM
,SUM(CASE WHEN CM.MM = '05' THEN CM.PRICE::NUMERIC ELSE NULL END) AS M05_PRICE
,SUM(CASE WHEN CM.MM = '05' THEN CM.QTY ::NUMERIC ELSE NULL END) AS M05_CM
,SUM(CASE WHEN RM.MM = '05' THEN RM.QTY ::NUMERIC ELSE NULL END) AS M05_RM
,SUM(CASE WHEN CM.MM = '06' THEN CM.PRICE::NUMERIC ELSE NULL END) AS M06_PRICE
,SUM(CASE WHEN CM.MM = '06' THEN CM.QTY ::NUMERIC ELSE NULL END) AS M06_CM
,SUM(CASE WHEN RM.MM = '06' THEN RM.QTY ::NUMERIC ELSE NULL END) AS M06_RM
,SUM(CASE WHEN CM.MM = '07' THEN CM.PRICE::NUMERIC ELSE NULL END) AS M07_PRICE
,SUM(CASE WHEN CM.MM = '07' THEN CM.QTY ::NUMERIC ELSE NULL END) AS M07_CM
,SUM(CASE WHEN RM.MM = '07' THEN RM.QTY ::NUMERIC ELSE NULL END) AS M07_RM
,SUM(CASE WHEN CM.MM = '08' THEN CM.PRICE::NUMERIC ELSE NULL END) AS M08_PRICE
,SUM(CASE WHEN CM.MM = '08' THEN CM.QTY ::NUMERIC ELSE NULL END) AS M08_CM
,SUM(CASE WHEN RM.MM = '08' THEN RM.QTY ::NUMERIC ELSE NULL END) AS M08_RM
,SUM(CASE WHEN CM.MM = '09' THEN CM.PRICE::NUMERIC ELSE NULL END) AS M09_PRICE
,SUM(CASE WHEN CM.MM = '09' THEN CM.QTY ::NUMERIC ELSE NULL END) AS M09_CM
,SUM(CASE WHEN RM.MM = '09' THEN RM.QTY ::NUMERIC ELSE NULL END) AS M09_RM
,SUM(CASE WHEN CM.MM = '10' THEN CM.PRICE::NUMERIC ELSE NULL END) AS M10_PRICE
,SUM(CASE WHEN CM.MM = '10' THEN CM.QTY ::NUMERIC ELSE NULL END) AS M10_CM
,SUM(CASE WHEN RM.MM = '10' THEN RM.QTY ::NUMERIC ELSE NULL END) AS M10_RM
,SUM(CASE WHEN CM.MM = '11' THEN CM.PRICE::NUMERIC ELSE NULL END) AS M11_PRICE
,SUM(CASE WHEN CM.MM = '11' THEN CM.QTY ::NUMERIC ELSE NULL END) AS M11_CM
,SUM(CASE WHEN RM.MM = '11' THEN RM.QTY ::NUMERIC ELSE NULL END) AS M11_RM
,SUM(CASE WHEN CM.MM = '12' THEN CM.PRICE::NUMERIC ELSE NULL END) AS M12_PRICE
,SUM(CASE WHEN CM.MM = '12' THEN CM.QTY ::NUMERIC ELSE NULL END) AS M12_CM
,SUM(CASE WHEN RM.MM = '12' THEN RM.QTY ::NUMERIC ELSE NULL END) AS M12_RM
FROM COMM_CODE CC
LEFT OUTER JOIN ( SELECT PRODUCT
,TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYY-MM-DD'),'MM') AS MM
<!-- ,FACILITY_QTY AS QTY -->
,1 AS QTY
,CONTRACT_PRICE AS PRICE
FROM CONTRACT_MGMT T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
<if test="category_cd !=null and category_cd != '' ">
AND CATEGORY_CD = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CUSTOMER_OBJID = #{customer_objid}
</if>
) AS CM
ON CC.CODE_ID = CM.PRODUCT
LEFT OUTER JOIN ( SELECT RM1.PRODUCT
,TO_CHAR(TO_DATE(RM1.RELEASE_DATE,'YYYY-MM-DD'),'MM') AS MM
<!-- ,CM1.FACILITY_QTY AS QTY -->
,1 AS QTY
<!-- FROM CONTRACT_MGMT CM1, RELEASE_MGMT RM1 -->
FROM CONTRACT_MGMT CM1,(SELECT RM.*,PM.CONTRACT_OBJID FROM PROJECT_MGMT AS PM RIGHT JOIN RELEASE_MGMT AS RM
ON PM.OBJID = RM.PARENT_OBJID) AS RM1
WHERE CM1.OBJID = RM1.CONTRACT_OBJID
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(RM1.RELEASE_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
<if test="category_cd !=null and category_cd != '' ">
AND CATEGORY_CD = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CUSTOMER_OBJID = #{customer_objid}
</if>
) AS RM
ON CC.CODE_ID = RM.PRODUCT
WHERE CC.PARENT_CODE_ID = '0000001'
AND (CM.PRODUCT IS NOT NULL OR RM.PRODUCT IS NOT NULL)
<if test="product !=null and product != '' ">
AND CC.CODE_ID = #{product}
</if>
GROUP BY ROLLUP ( (CC.CODE_ID, CC.CODE_NAME) )
</select>
<select id="getContractDashBoard" parameterType="map" resultType="map">
WITH WITH_BASE_DATA AS (
SELECT *
, CAST(DATE_TRUNC('MONTH', TO_DATE(CD.YEAR_MONTH2, 'YYYY-MM')) AS DATE) AS MONTH_FIRST_DAY
, (DATE_TRUNC('MONTH', TO_DATE(CD.YEAR_MONTH2, 'YYYY-MM')) + INTERVAL '1 MONTH - 1 DAY')::DATE AS MONTH_LAST_DAY
FROM
(
(SELECT
OBJID
, CODE_ID
, CODE_NAME
FROM COMM_CODE CC
WHERE PARENT_CODE_ID = '0000001'
) CD
INNER JOIN (SELECT #{Year}|| RIGHT('0' || LINE_VALUE, 2) YEAR_MONTH
,#{Year}|| '-'||RIGHT('0' || LINE_VALUE, 2) YEAR_MONTH2
,LINE_VALUE MM
FROM GENERATE_SERIES(1,12) AS TBL(LINE_VALUE)) YEAR_MONTH
ON 1=1
) CD
LEFT OUTER JOIN(
SELECT
CM.PRODUCT
,TO_CHAR(TO_DATE(CM.CONTRACT_DATE,'YYYY-MM-DD'),'YYYYMM') AS CONTRACT_YEAR_MONTH
,SUM(COALESCE(CM.CONTRACT_PRICE::FLOAT,0)) CONTRACT_COST
,COUNT(1) CONTRACT_CNT
,SUM(CM.QTY) QTY
FROM
(SELECT CM.PRODUCT
,CM.CONTRACT_DATE
,(CASE WHEN NVL(CM.CONTRACT_PRICE, '0') != '0' THEN NVL(CM.CONTRACT_PRICE, '0')
WHEN CONTRACT_CURRENCY = '0001566' AND NVL(CM.CONTRACT_PRICE_CURRENCY, '0') != '0' THEN NVL(CM.CONTRACT_PRICE_CURRENCY, '0')
ELSE NVL(CM.CONTRACT_PRICE, '0')
END) CONTRACT_PRICE
,( SELECT COUNT(1) QTY
FROM PROJECT_MGMT AS PM
RIGHT JOIN RELEASE_MGMT AS RM
ON PM.OBJID = RM.PARENT_OBJID
WHERE CM.OBJID = PM.CONTRACT_OBJID
) QTY
FROM CONTRACT_MGMT CM
LEFT OUTER JOIN SUPPLY_MNG SM
ON CM.CUSTOMER_OBJID = SM.OBJID::VARCHAR
WHERE CM.CONTRACT_DATE IS NOT NULL
AND CM.CONTRACT_RESULT = '0000964'
<if test="Year !=null and Year != '' ">
<!-- AND TO_CHAR(CM.REGDATE,'YYYY') = #{Year} -->
AND TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND UPPER(CUSTOMER_OBJID) LIKE UPPER('%${customer_objid}%')
</if>
<if test="producer_cd != null and producer_cd !='' ">
AND PRODUCER_CD = #{producer_cd}
</if>
<if test="category_cd !=null and category_cd != '' ">
AND CATEGORY_CD = #{category_cd}
</if>
<if test="product !=null and product != '' ">
AND CM.PRODUCT = #{product}
</if>
) CM
GROUP BY CM.PRODUCT
,TO_CHAR(TO_DATE(CM.CONTRACT_DATE,'YYYY-MM-DD'),'YYYYMM')
) CT
ON CD.CODE_ID = CT.PRODUCT
AND CD.YEAR_MONTH = CT.CONTRACT_YEAR_MONTH
<!-- 240822 아래쿼리는 문제 있어서 위 서브쿼리로 이동(QTY 출고수량)
LEFT OUTER JOIN(
SELECT RM1.PRODUCT
,TO_CHAR(TO_DATE(RM1.RELEASE_DATE,'YYYY-MM-DD'),'MM') AS RELEASE_YEAR_MONTH
,1 AS QTY
FROM CONTRACT_MGMT CM1,(SELECT RM.*,PM.CONTRACT_OBJID FROM PROJECT_MGMT AS PM RIGHT JOIN RELEASE_MGMT AS RM
ON PM.OBJID = RM.PARENT_OBJID) AS RM1
WHERE CM1.OBJID = RM1.CONTRACT_OBJID
<if test="Year !=null and Year != '' ">
AND TO_CHAR(TO_DATE(RM1.RELEASE_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
</if>
<if test="category_cd !=null and category_cd != '' ">
AND CATEGORY_CD = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND CUSTOMER_OBJID = #{customer_objid}
</if>
<if test="product !=null and product != '' ">
AND RM1.PRODUCT = #{product}
</if>
) AS RM
ON CD.CODE_ID = RM.PRODUCT
AND CD.YEAR_MONTH = RM.RELEASE_YEAR_MONTH
-->
)
SELECT
'1' ORDER_NO
,YEAR_MONTH
,MM
,SUM(COALESCE(CONTRACT_CNT, 0)) CONTRACT_CNT_YEAR
,SUM(COALESCE(CONTRACT_COST, 0)) CONTRACT_COST_YEAR_ORG
,SUM(COALESCE(CONTRACT_COST, 0))/100000000 CONTRACT_COST_YEAR
,SUM(COALESCE(QTY, 0)) RELEASE_CNT_YEAR
<foreach collection="moldKindCdList" item="obj">
,SUM(CASE WHEN CODE_ID = '${obj.CODE}' THEN CONTRACT_CNT ELSE 0 END) CONTRACT_CNT_MONTH_${obj.CODE}
,SUM(CASE WHEN CODE_ID = '${obj.CODE}' THEN CONTRACT_COST ELSE 0 END) CONTRACT_COST_MONTH_${obj.CODE}
</foreach>
,#{Year} AS TARGET_YEAR
FROM WITH_BASE_DATA
GROUP BY ROLLUP (
(YEAR_MONTH, MM) )
ORDER BY YEAR_MONTH
</select>
<select id="batbat_barChart" parameterType="map" resultType="map">
SELECT country, gdp
FROM test_chart
WHERE chart_type = 'bar'
ORDER BY country
</select>
<select id="batbat_lineChart" parameterType="map" resultType="map">
SELECT year, annual, five
FROM test_chart
WHERE chart_type = 'line'
ORDER BY year
</select>
<!-- 영업목표 -->
<select id="getYearGoalInfo" parameterType="map" resultType="map">
WITH W_CM AS (
SELECT
AREA_CD,
<!-- (SUM(COALESCE( -->
(CASE WHEN NVL(CM.CONTRACT_PRICE, '0') != '0' THEN NVL(CM.CONTRACT_PRICE, '0')
WHEN CONTRACT_CURRENCY = '0001566' AND NVL(CM.CONTRACT_PRICE_CURRENCY, '0') != '0' THEN NVL(CM.CONTRACT_PRICE_CURRENCY, '0')
ELSE NVL(CM.CONTRACT_PRICE, '0')
END) CONTRACT_PRICE
<!-- ::FLOAT, 0))) CONTRACT_PRICE -->
FROM CONTRACT_MGMT CM
WHERE CM.CONTRACT_RESULT = '0000964'
AND TO_CHAR(TO_DATE(CONTRACT_DATE, 'YYYY-MM-DD'), 'YYYY') = #{Year}
)
SELECT
*
,CASE WHEN CONTRACT_CNT_YEAR_ALL IS NULL OR CONTRACT_CNT_YEAR_ALL = 0 THEN NULL
ELSE CONTRACT_CNT_YEAR / CONTRACT_CNT_YEAR_ALL * 100 END AS CONTRACT_CNT_YEAR_RATE
FROM(
SELECT
OBJID YEAR_GOAL_OBJID
,YEAR
,PRICE::integer
,WRITER
,REGDATE
,(SELECT count(1) FROM CONTRACT_MGMT WHERE TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = #{Year} ) AS CONTRACT_CNT_YEAR_ALL
,(SELECT count(1) FROM W_CM CM ) AS CONTRACT_CNT_YEAR
,(SELECT count(1) FROM W_CM CM WHERE AREA_CD = '0001220' ) AS CONTRACT_CNT_YEAR_IN
,(SELECT count(1) FROM W_CM CM WHERE AREA_CD = '0001221' ) AS CONTRACT_CNT_YEAR_OUT
,coalesce((SELECT (SUM(coalesce(NVL(CM.CONTRACT_PRICE, '0')::FLOAT, 0)))/100000000 FROM W_CM CM )::integer,0) AS CONTRACT_COST_YEAR
<!-- ,(SELECT ROUND(SUM(CASE WHEN CONTRACT_PRICE IS NULL OR CONTRACT_PRICE = '' THEN '0' ELSE CONTRACT_PRICE::INTEGER END) / 100000000.0, 1) FROM CONTRACT_MGMT WHERE TO_CHAR(CONTRACT_DATE::DATE, 'YYYY') = #{Year}) AS CONTRACT_COST_YEAR-->
,CASE
WHEN PRICE IS NULL OR PRICE::integer = 0
THEN 0
ELSE coalesce((((select (SUM(coalesce(NVL(CM.CONTRACT_PRICE, '0')::FLOAT, 0)))/100000000 FROM W_CM CM) / price::integer) * 100),0)
END AS GOAL_RATE
FROM
PMS_PJT_YEAR_GOAL FMB
WHERE 1=1
<!--
AND OBJID = #{OBJID}
-->
<if test="YEAR_GOAL_OBJID != null and !''.equals(YEAR_GOAL_OBJID)">
AND OBJID = #{YEAR_GOAL_OBJID}
</if>
<if test="Year != null and !''.equals(Year)">
AND YEAR = #{Year}
</if>
<if test="operation_division_code != null and !''.equals(operation_division_code)">
AND OPERATION_DIVISION_CODE = #{operation_division_code}
</if>
) T
</select>
<update id="saveYearGoalInfo" parameterType="map">
INSERT INTO
PMS_PJT_YEAR_GOAL
(
OBJID
,YEAR
,OPERATION_DIVISION_CODE
,PRICE
,WRITER
,REGDATE
)VALUES(
#{YEAR_GOAL_OBJID}
,#{Year}
,#{operation_division_code}
,#{PRICE}
,#{WRITER}
,NOW()
)ON CONFLICT (OBJID) DO
UPDATE
SET
<!--
YEAR = #{year}
,OPERATION_DIVISION_CODE = #{operation_division_code}
-->
PRICE = #{PRICE}
</update>
<delete id="deleteYearGoalInfo" parameterType="map">
DELETE FROM PMS_PJT_YEAR_GOAL WHERE 1=1
<if test="checkArr != null and checkArr !=''">
<![CDATA[ AND 0 < POSITION(PARENT_OBJID::TEXT || ',' IN #{checkArr}||',') ]]>
</if>
</delete>
<select id="getContractCNTBySupply" parameterType="map" resultType="map">
SELECT
ASM.OBJID
,ASM.SUPPLY_NAME
,S1.*
FROM
SUPPLY_MNG ASM
,(
SELECT
CM.CUSTOMER_OBJID
,CODE_NAME(CM.CUSTOMER_OBJID)
,count(1) AS TOTAL_SUPPLY_UNIT_CNT
FROM
CONTRACT_MGMT CM
WHERE CM.CONTRACT_RESULT = '0000964'
AND TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYY-MM-DD'),'YYYY') = #{Year}
GROUP BY CM.CUSTOMER_OBJID
) AS S1
WHERE 1=1
AND ASM.OBJID::VARCHAR = S1.CUSTOMER_OBJID
ORDER BY ASM.SUPPLY_NAME
</select>
<select id="getProjectListBycontractObjid" parameterType="map" resultType="map">
SELECT
PROJECT_NAME
FROM
PROJECT_MGMT
WHERE CONTRACT_OBJID = #{objId}
limit 1
</select>
<select id="overlapOrder" parameterType="map" resultType="map">
SELECT
T.*
FROM
PROJECT_MGMT T
WHERE 1=1
AND PROJECT_NO LIKE UPPER('${target_project_no_direct}%')
AND OVERHAUL_ORDER = #{overhaul_order}
</select>
<select id="projectCount" parameterType="map" resultType="map">
WITH W_BASE AS (
SELECT PM.*
,(SELECT CASE
WHEN COUNT(CASE WHEN PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END) = 0 THEN 0
ELSE ROUND((
COUNT(CASE WHEN SETUP_ACT_END != '' AND SETUP_ACT_END IS NOT NULL AND PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END)::FLOAT
/
COUNT(CASE WHEN PARENT_OBJID IS NOT NULL AND PARENT_OBJID != '' THEN 1 END)
* 100
)::numeric, 1)
END AS SETUP_RATETOTAL
FROM SETUP_WBS_TASK T
WHERE T.CONTRACT_OBJID = PM.OBJID
) SETUP_RATETOTAL
FROM PROJECT_MGMT PM
LEFT OUTER JOIN CONTRACT_MGMT CM
ON CM.OBJID = PM.CONTRACT_OBJID
WHERE 1=1
<!--
AND TO_CHAR(CM.REGDATE, 'YYYY') = TO_CHAR(CURRENT_DATE, 'YYYY')
WHERE TO_CHAR(REGDATE, 'YYYY') = #{Year}
-->
<if test="SEARCH_PROJECT_YEAR != null and SEARCH_PROJECT_YEAR !=''">
<!--
AND TO_CHAR(TO_DATE(CM.CONTRACT_DATE, 'YYYY'), 'YYYY') = #{SEARCH_PROJECT_YEAR}
-->
AND #{SEARCH_PROJECT_YEAR} BETWEEN
(SELECT <!-- COALESCE( -->
LEAST(
MIN(TO_CHAR(TO_DATE(NULLIF(PURCHASE_PLAN_START, ''), 'YYYY'), 'YYYY')),
MIN(TO_CHAR(TO_DATE(NULLIF(PRODUCE_PLAN_START , ''), 'YYYY'), 'YYYY')),
MIN(TO_CHAR(TO_DATE(NULLIF(DESIGN_PLAN_START , ''), 'YYYY'), 'YYYY')),
(SELECT
MIN(TO_CHAR(TO_DATE(NULLIF(SETUP_PLAN_START , ''), 'YYYY'), 'YYYY'))
FROM SETUP_WBS_TASK AS S WHERE S.CONTRACT_OBJID=PM.OBJID)
)<!-- , TO_CHAR(TO_DATE(CM.CONTRACT_DATE, 'YYYY'), 'YYYY')) -->
FROM PMS_WBS_TASK O
WHERE O.CONTRACT_OBJID=PM.OBJID)
AND (SELECT <!-- COALESCE( -->
GREATEST(
MAX(TO_CHAR(TO_DATE(NULLIF(PURCHASE_PLAN_END, ''), 'YYYY'), 'YYYY')),
MAX(TO_CHAR(TO_DATE(NULLIF(PRODUCE_PLAN_END , ''), 'YYYY'), 'YYYY')),
MAX(TO_CHAR(TO_DATE(NULLIF(DESIGN_PLAN_END , ''), 'YYYY'), 'YYYY')),
(SELECT
MAX(TO_CHAR(TO_DATE(NULLIF(SETUP_PLAN_END , ''), 'YYYY'), 'YYYY'))
FROM SETUP_WBS_TASK AS S WHERE S.CONTRACT_OBJID=PM.OBJID)
)<!-- , TO_CHAR(TO_DATE(CM.DUE_DATE, 'YYYY'), 'YYYY')) -->
FROM PMS_WBS_TASK O
WHERE O.CONTRACT_OBJID=PM.OBJID)
</if>
AND CM.CONTRACT_RESULT = '0000964'
),
NOPLAN_COUNT AS (
SELECT COUNT(*) AS NOPLAN_CNT
,STRING_AGG(PM.OBJID::TEXT,',') AS END_OBJIDS
FROM W_BASE PM
WHERE 1=1
AND (NOT EXISTS(
SELECT 'E'
FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=PM.OBJID)
AND NOT EXISTS(
SELECT 'E'
FROM SETUP_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=PM.OBJID)
OR (NOT EXISTS(
SELECT 'E'
FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=PM.OBJID
AND
(
( O.DESIGN_PLAN_START IS NOT NULL
AND O.DESIGN_PLAN_START!=''
AND O.DESIGN_PLAN_END IS NOT NULL
AND O.DESIGN_PLAN_END!=''
)
OR ( O.PURCHASE_PLAN_START IS NOT NULL
AND O.PURCHASE_PLAN_START!=''
AND O.PURCHASE_PLAN_END IS NOT NULL
AND O.PURCHASE_PLAN_END!=''
)
OR ( O.PRODUCE_PLAN_START IS NOT NULL
AND O.PRODUCE_PLAN_START!=''
AND O.PRODUCE_PLAN_END IS NOT NULL
AND O.PRODUCE_PLAN_END!=''
)
)
)
AND NOT EXISTS(
SELECT 'E'
FROM SETUP_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=PM.OBJID
AND ( O.SETUP_PLAN_START IS NOT NULL
AND O.SETUP_PLAN_START!=''
AND O.SETUP_PLAN_END IS NOT NULL
AND O.SETUP_PLAN_END!=''
)
)
)
)
),
END_COUNT AS (
SELECT COUNT(*) AS END_CNT
,STRING_AGG(PM.OBJID::TEXT,',') AS END_OBJIDS
FROM W_BASE PM
WHERE 1=1
<!--
AND SETUP_ACT_END = #{Year}
AND SETUP_ACT_END = TO_CHAR(CURRENT_DATE, 'YYYY')
-->
AND SETUP_RATETOTAL >= 100
),
PROJECT_STATS AS (
SELECT COUNT(*) AS TOTAL_ORDERS
,STRING_AGG(PM.OBJID::TEXT,',') AS STATUS_OBJIDS
FROM W_BASE PM
WHERE 1=1
<!--
WHERE TO_CHAR(TO_DATE(CONTRACT_DATE, 'YYYY'), 'YYYY') = TO_CHAR(CURRENT_DATE, 'YYYY')
WHERE TO_CHAR(REGDATE, 'YYYY') = #{Year}
-->
),
ING_COUNT AS (
SELECT COUNT(*) AS ING_CNT
,STRING_AGG(PM.OBJID::TEXT,',') AS ING_OBJIDS
FROM W_BASE PM
LEFT OUTER JOIN (
SELECT
CONTRACT_OBJID
,COUNT(CASE WHEN DESIGN_ACT_START IS NOT NULL AND DESIGN_ACT_START!='' THEN 1 END) AS DESIGN_START_COUNT
,MIN(DESIGN_ACT_START) DESIGN_ACT_START_MIN
FROM
PMS_WBS_TASK
GROUP BY
CONTRACT_OBJID
) WT ON WT.CONTRACT_OBJID = PM.OBJID
WHERE 1=1
AND SETUP_RATETOTAL &lt; '100'
<!--
AND WT.DESIGN_START_COUNT > 0
AND WT.DESIGN_ACT_START_MIN &lt;= TO_CHAR(NOW(), 'YYYY-MM-DD')
-->
AND NOT EXISTS(
SELECT 'E'
FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=PM.OBJID
<!--
AND TO_DATE(O.DESIGN_PLAN_START,'YYYY-MM-DD') <![CDATA[ > ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
-->
AND
(
( TO_DATE(O.DESIGN_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.DESIGN_ACT_END='' OR O.DESIGN_ACT_END IS NULL)
AND O.DESIGN_PLAN_END IS NOT NULL
AND O.DESIGN_PLAN_END!=''
)
OR ( TO_DATE(O.PURCHASE_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.PURCHASE_ACT_END='' OR O.PURCHASE_ACT_END IS NULL)
AND O.PURCHASE_PLAN_END IS NOT NULL
AND O.PURCHASE_PLAN_END!=''
)
OR ( TO_DATE(O.PRODUCE_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.PRODUCE_ACT_END='' OR O.PRODUCE_ACT_END IS NULL)
AND O.PRODUCE_PLAN_END IS NOT NULL
AND O.PRODUCE_PLAN_END!=''
)
)
)
AND NOT EXISTS(
SELECT 'E'
FROM SETUP_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=PM.OBJID
AND ( TO_DATE(O.SETUP_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.SETUP_ACT_END='' OR O.SETUP_ACT_END IS NULL)
AND O.SETUP_PLAN_END IS NOT NULL
AND O.SETUP_PLAN_END!=''
)
)
),
DELAY_COUNT AS (
SELECT COUNT(*) AS DELAY_CNT
,STRING_AGG(PM.OBJID::TEXT,',') AS DELAY_OBJIDS
FROM W_BASE PM
WHERE 1=1
AND SETUP_RATETOTAL != '100'
AND EXISTS (SELECT COUNT(1) FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=PM.OBJID
AND(( O.DESIGN_PLAN_START IS NOT NULL
AND O.DESIGN_PLAN_START!=''
AND O.DESIGN_PLAN_END IS NOT NULL
AND O.DESIGN_PLAN_END!=''
)
OR ( O.PURCHASE_PLAN_START IS NOT NULL
AND O.PURCHASE_PLAN_START!=''
AND O.PURCHASE_PLAN_END IS NOT NULL
AND O.PURCHASE_PLAN_END!=''
)
OR ( O.PRODUCE_PLAN_START IS NOT NULL
AND O.PRODUCE_PLAN_START!=''
AND O.PRODUCE_PLAN_END IS NOT NULL
AND O.PRODUCE_PLAN_END!=''
)
)
)
AND EXISTS (SELECT COUNT(1) FROM SETUP_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=PM.OBJID
AND ( O.SETUP_PLAN_START IS NOT NULL
AND O.SETUP_PLAN_START!=''
AND O.SETUP_PLAN_END IS NOT NULL
AND O.SETUP_PLAN_END!=''
)
)
AND (EXISTS(
SELECT 'E'
FROM PMS_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=PM.OBJID
<!--
AND TO_DATE(O.DESIGN_PLAN_START,'YYYY-MM-DD') <![CDATA[ > ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
-->
AND
(
( TO_DATE(O.DESIGN_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.DESIGN_ACT_END='' OR O.DESIGN_ACT_END IS NULL)
AND O.DESIGN_PLAN_END IS NOT NULL
AND O.DESIGN_PLAN_END!=''
)
OR ( TO_DATE(O.PURCHASE_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.PURCHASE_ACT_END='' OR O.PURCHASE_ACT_END IS NULL)
AND O.PURCHASE_PLAN_END IS NOT NULL
AND O.PURCHASE_PLAN_END!=''
)
OR ( TO_DATE(O.PRODUCE_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.PRODUCE_ACT_END='' OR O.PRODUCE_ACT_END IS NULL)
AND O.PRODUCE_PLAN_END IS NOT NULL
AND O.PRODUCE_PLAN_END!=''
)
)
)
OR
EXISTS(
SELECT 'E'
FROM SETUP_WBS_TASK AS O
WHERE O.CONTRACT_OBJID=PM.OBJID
AND ( TO_DATE(O.SETUP_PLAN_END,'YYYY-MM-DD') <![CDATA[ < ]]> TO_DATE(TO_CHAR(NOW(),'YYYY-MM-DD'),'YYYY-MM-DD')
AND (O.SETUP_ACT_END='' OR O.SETUP_ACT_END IS NULL)
AND O.SETUP_PLAN_END IS NOT NULL
AND O.SETUP_PLAN_END!=''
)
)
)
),
HOLD_COUNT AS (
SELECT COUNT(*) AS HOLD_CNT
,STRING_AGG(PM.OBJID::TEXT,',') AS HOLD_OBJIDS
FROM W_BASE PM
LEFT OUTER JOIN (
SELECT
CONTRACT_OBJID,
COUNT(CASE WHEN DESIGN_ACT_START IS NOT NULL AND DESIGN_ACT_START!='' THEN 1 END) AS DESIGN_START_COUNT,
MIN(CASE WHEN DESIGN_ACT_START IS NOT NULL AND DESIGN_ACT_START != '' THEN DESIGN_ACT_START END) AS DESIGN_START_MIN
FROM
PMS_WBS_TASK
GROUP BY
CONTRACT_OBJID
) WT ON WT.CONTRACT_OBJID = PM.OBJID
WHERE 1=1
AND (
COALESCE(WT.DESIGN_START_COUNT, 0) = 0
OR TO_DATE(WT.DESIGN_START_MIN,'YYYY-MM_DD') > CURRENT_DATE
OR WT.DESIGN_START_MIN IS NULL
)
)
SELECT
E.END_CNT AS CNT_END
,P.TOTAL_ORDERS AS CNT_ORDER
,I.ING_CNT - N.NOPLAN_CNT AS CNT_ING
,H.HOLD_CNT AS CNT_HOLD
,N.NOPLAN_CNT CNT_NOPLAN
,D.DELAY_CNT AS CNT_DELAY
<!--
,E.END_OBJIDS
,P.STATUS_OBJIDS
,I.ING_OBJIDS
,H.HOLD_OBJIDS
,D.DELAY_OBJIDS
-->
FROM END_COUNT E, PROJECT_STATS P, ING_COUNT I, DELAY_COUNT D, HOLD_COUNT H, NOPLAN_COUNT N
</select>
<!-- 견적서 템플릿 관련 쿼리 -->
<!-- 견적서 기본 정보 조회 -->
<select id="getEstimateTemplateInfo" parameterType="map" resultType="map">
SELECT
OBJID,
CATEGORY_CD,
CODE_NAME(CATEGORY_CD) AS CATEGORY_NAME,
CUSTOMER_OBJID,
(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME,
PRODUCT,
CODE_NAME(PRODUCT) AS PRODUCT_NAME,
CUSTOMER_PROJECT_NAME,
AREA_CD,
CODE_NAME(AREA_CD) AS AREA_NAME,
CASE
WHEN PAID_TYPE = 'paid' THEN '유상'
WHEN PAID_TYPE = 'free' THEN '무상'
ELSE PAID_TYPE
END AS PAID_TYPE,
RECEIPT_DATE,
PART_NO,
PART_NAME,
SERIAL_NO,
QUANTITY,
CUSTOMER_REQUEST,
CONTRACT_CURRENCY,
CODE_NAME(CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME,
EXCHANGE_RATE,
DUE_DATE,
WRITER,
(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER) AS WRITER_NAME,
REGDATE,
TO_CHAR(REGDATE,'YYYY-MM-DD') AS REG_DATE
FROM
CONTRACT_MGMT AS T
WHERE
OBJID::VARCHAR = #{objId}
</select>
<!-- 견적서 템플릿 목록 조회 (CONTRACT_OBJID 기준) -->
<select id="getEstimateTemplateList" parameterType="map" resultType="map">
SELECT
OBJID AS "OBJID",
CONTRACT_OBJID AS "CONTRACT_OBJID",
TEMPLATE_TYPE AS "TEMPLATE_TYPE",
CASE
WHEN TEMPLATE_TYPE = '1' THEN '일반 견적서'
WHEN TEMPLATE_TYPE = '2' THEN '장비 견적서'
ELSE TEMPLATE_TYPE
END AS "TEMPLATE_TYPE_NAME",
ESTIMATE_NO AS "ESTIMATE_NO",
WRITER AS "WRITER",
TO_CHAR(REGDATE, 'YYYY-MM-DD HH24:MI') AS "REGDATE",
CHG_USER_ID AS "CHG_USER_ID",
TO_CHAR(CHGDATE, 'YYYY-MM-DD HH24:MI') AS "CHGDATE",
ROW_NUMBER() OVER (PARTITION BY TEMPLATE_TYPE ORDER BY REGDATE) AS "REVISION"
FROM
ESTIMATE_TEMPLATE
WHERE
CONTRACT_OBJID = #{objId}
ORDER BY TEMPLATE_TYPE, REGDATE DESC
</select>
<!-- 견적서 템플릿 데이터 조회 (ESTIMATE_TEMPLATE 테이블) -->
<select id="getEstimateTemplateData" parameterType="map" resultType="map">
SELECT
OBJID,
CONTRACT_OBJID,
TEMPLATE_TYPE,
EXECUTOR,
RECIPIENT,
ESTIMATE_NO,
CONTACT_PERSON,
GREETING_TEXT,
MODEL_NAME,
MODEL_CODE,
EXECUTOR_DATE,
NOTE1,
NOTE2,
NOTE3,
NOTE4,
WRITER,
REGDATE,
CHG_USER_ID,
CHGDATE
FROM
ESTIMATE_TEMPLATE
WHERE
CONTRACT_OBJID = #{objId}
<if test="template_type != null and template_type != ''">
AND TEMPLATE_TYPE = #{template_type}
</if>
ORDER BY REGDATE DESC
LIMIT 1
</select>
<!-- 견적서 템플릿 데이터 조회 (OBJID 기준) -->
<select id="getEstimateTemplateByObjId" parameterType="map" resultType="map">
SELECT
OBJID,
CONTRACT_OBJID,
TEMPLATE_TYPE,
EXECUTOR,
RECIPIENT,
ESTIMATE_NO,
CONTACT_PERSON,
GREETING_TEXT,
MODEL_NAME,
MODEL_CODE,
EXECUTOR_DATE,
NOTE1,
NOTE2,
NOTE3,
NOTE4,
WRITER,
TO_CHAR(REGDATE, 'YYYY-MM-DD HH24:MI') AS REGDATE,
CHG_USER_ID,
TO_CHAR(CHGDATE, 'YYYY-MM-DD HH24:MI') AS CHGDATE
FROM
ESTIMATE_TEMPLATE
WHERE
OBJID = #{templateObjId}
</select>
<!-- 견적서 템플릿 품목 조회 (TEMPLATE_OBJID 기준) -->
<select id="getEstimateTemplateItemsByTemplateObjId" parameterType="map" resultType="map">
SELECT
OBJID,
TEMPLATE_OBJID,
SEQ,
CATEGORY,
DESCRIPTION,
SPECIFICATION,
QUANTITY,
UNIT,
UNIT_PRICE,
AMOUNT,
NOTE,
REMARK
FROM
ESTIMATE_TEMPLATE_ITEM
WHERE
TEMPLATE_OBJID = #{templateObjId}
ORDER BY SEQ
</select>
<!-- 견적서 템플릿 품목 조회 -->
<select id="getEstimateTemplateItems" parameterType="map" resultType="map">
SELECT
OBJID,
TEMPLATE_OBJID,
SEQ,
CATEGORY,
DESCRIPTION,
SPECIFICATION,
QUANTITY,
UNIT,
UNIT_PRICE,
AMOUNT,
NOTE,
REMARK
FROM
ESTIMATE_TEMPLATE_ITEM
WHERE
TEMPLATE_OBJID IN (
SELECT OBJID
FROM ESTIMATE_TEMPLATE
WHERE CONTRACT_OBJID = #{objId}
)
ORDER BY SEQ
</select>
<!-- 견적서 템플릿 저장 -->
<insert id="insertEstimateTemplate" parameterType="map">
INSERT INTO ESTIMATE_TEMPLATE (
OBJID,
CONTRACT_OBJID,
TEMPLATE_TYPE,
EXECUTOR,
RECIPIENT,
ESTIMATE_NO,
CONTACT_PERSON,
GREETING_TEXT,
MODEL_NAME,
MODEL_CODE,
EXECUTOR_DATE,
NOTE1,
NOTE2,
NOTE3,
NOTE4,
WRITER,
REGDATE,
CHG_USER_ID,
CHGDATE
) VALUES (
#{template_objid},
#{objId},
#{template_type},
#{executor},
#{recipient},
#{estimate_no},
#{contact_person},
#{greeting_text},
#{model_name},
#{model_code},
#{executor_date},
#{note1},
#{note2},
#{note3},
#{note4},
#{writer},
NOW(),
#{chg_user_id},
NOW()
)
</insert>
<!-- 견적서 템플릿 수정 -->
<update id="updateEstimateTemplate" parameterType="map">
UPDATE ESTIMATE_TEMPLATE
SET
EXECUTOR = #{executor},
RECIPIENT = #{recipient},
ESTIMATE_NO = #{estimate_no},
CONTACT_PERSON = #{contact_person},
GREETING_TEXT = #{greeting_text},
MODEL_NAME = #{model_name},
MODEL_CODE = #{model_code},
EXECUTOR_DATE = #{executor_date},
NOTE1 = #{note1},
NOTE2 = #{note2},
NOTE3 = #{note3},
NOTE4 = #{note4},
CHG_USER_ID = #{chg_user_id},
CHGDATE = NOW()
WHERE
OBJID = #{template_objid}
</update>
<!-- 견적서 템플릿 품목 삭제 -->
<delete id="deleteEstimateTemplateItems" parameterType="map">
DELETE FROM ESTIMATE_TEMPLATE_ITEM
WHERE
TEMPLATE_OBJID = #{template_objid}
</delete>
<!-- 견적서 템플릿 품목 저장 -->
<insert id="insertEstimateTemplateItems" parameterType="map">
INSERT INTO ESTIMATE_TEMPLATE_ITEM (
TEMPLATE_OBJID,
SEQ,
CATEGORY,
DESCRIPTION,
SPECIFICATION,
QUANTITY,
UNIT,
UNIT_PRICE,
AMOUNT,
NOTE,
REMARK
)
SELECT
#{template_objid},
(item->>'seq')::INTEGER,
item->>'category',
item->>'description',
item->>'specification',
item->>'quantity',
item->>'unit',
CASE
WHEN item->>'unit_price' = '' THEN NULL
ELSE (item->>'unit_price')::NUMERIC
END,
CASE
WHEN item->>'amount' = '' THEN NULL
ELSE (item->>'amount')::NUMERIC
END,
item->>'note',
item->>'remark'
FROM json_array_elements(#{items_json}::json) AS item
WHERE COALESCE(item->>'description', '') != ''
</insert>
<!-- 견적서 템플릿 카테고리 업데이트 (장비 견적서용) -->
<update id="updateEstimateTemplateCategories" parameterType="map">
UPDATE ESTIMATE_TEMPLATE
SET
CATEGORIES_JSON = #{categories_json},
CHG_USER_ID = #{chg_user_id},
CHGDATE = NOW()
WHERE
OBJID = #{template_objid}
</update>
<!-- 최종 차수 견적서 조회 (메일 발송용) -->
<select id="getLatestEstimateTemplate" parameterType="map" resultType="map">
SELECT
OBJID AS "OBJID",
CONTRACT_OBJID AS "CONTRACT_OBJID",
TEMPLATE_TYPE AS "TEMPLATE_TYPE",
EXECUTOR AS "EXECUTOR",
RECIPIENT AS "RECIPIENT",
ESTIMATE_NO AS "ESTIMATE_NO",
CONTACT_PERSON AS "CONTACT_PERSON",
GREETING_TEXT AS "GREETING_TEXT",
MODEL_NAME AS "MODEL_NAME",
MODEL_CODE AS "MODEL_CODE",
EXECUTOR_DATE AS "EXECUTOR_DATE",
NOTE1 AS "NOTE1",
NOTE2 AS "NOTE2",
NOTE3 AS "NOTE3",
NOTE4 AS "NOTE4",
WRITER AS "WRITER",
TO_CHAR(REGDATE, 'YYYY-MM-DD HH24:MI') AS "REGDATE",
CHG_USER_ID AS "CHG_USER_ID",
TO_CHAR(CHGDATE, 'YYYY-MM-DD HH24:MI') AS "CHGDATE",
CATEGORIES_JSON AS "CATEGORIES_JSON"
FROM
ESTIMATE_TEMPLATE
WHERE
CONTRACT_OBJID = #{objId}
ORDER BY
TEMPLATE_TYPE,
REGDATE DESC
LIMIT 1
</select>
<!-- 계약 정보 조회 (메일 발송용) -->
<select id="getContractInfoForMail" parameterType="map" resultType="map">
SELECT
T.OBJID,
T.CUSTOMER_OBJID,
(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME,
(SELECT EMAIL FROM SUPPLY_MNG AS O WHERE O.OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_EMAIL,
T.CUSTOMER_PROJECT_NAME,
T.CONTRACT_NO,
T.PRODUCT,
CODE_NAME(T.PRODUCT) AS PRODUCT_NAME,
T.WRITER,
(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER) AS WRITER_NAME,
(SELECT EMAIL FROM USER_INFO AS O WHERE O.USER_ID = T.WRITER) AS WRITER_EMAIL,
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS REGDATE
FROM
CONTRACT_MGMT AS T
WHERE
OBJID::VARCHAR = #{objId}
</select>
<!-- //주문서관리 리스트 -->
<select id="orderMgmtGrodList" parameterType="map" resultType="map">
SELECT
T.*
FROM
<include refid="contractBase"/> T
WHERE 1=1
<if test="Year !=null and Year != '' ">
AND SUBSTR(CONTRACT_DATE,0,5) = #{Year}
</if>
<if test="category_cd !=null and category_cd != '' ">
AND category_cd = #{category_cd}
</if>
<if test="customer_objid !=null and customer_objid != '' ">
AND customer_objid = #{customer_objid}
</if>
<if test="product != null and product !='' ">
AND product = #{product}
</if>
<if test="status_cd !=null and status_cd !=''">
AND status_cd = #{status_cd}
</if>
<if test="result_cd !=null and result_cd !=''">
AND result_cd = #{result_cd}
</if>
<if test="contract_result !=null and contract_result !=''">
AND contract_result = #{contract_result}
</if>
<if test="contract_start_date != null and !''.equals(contract_start_date)">
AND TO_DATE(CONTRACT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{contract_start_date}, 'YYYY-MM-DD')
</if>
<if test="contract_end_date != null and !''.equals(contract_end_date)">
AND TO_DATE(CONTRACT_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{contract_end_date}, 'YYYY-MM-DD')
</if>
<if test="pm_user_id !=null and pm_user_id !=''">
AND pm_user_id = #{pm_user_id}
</if>
<if test="contract_month != null and !''.equals(contract_month)">
AND TO_DATE(TO_CHAR(TO_DATE(CONTRACT_DATE,'YYYY-MM-DD'),'YYYY-MM-DD'),'YYYY-MM') <![CDATA[ = ]]> TO_DATE(SUBSTRING(#{contract_month} FROM 1 FOR 4) || '-' || SUBSTRING(#{contract_month} FROM 5 FOR 2), 'YYYY-MM')
</if>
<!-- 견적관리 추가 검색조건 -->
<if test="appr_status !=null and appr_status != '' ">
AND APPR_STATUS = #{appr_status}
</if>
<if test="area_cd != null and area_cd !='' ">
AND AREA_CD = #{area_cd}
</if>
<if test="paid_type != null and paid_type !='' ">
AND PAID_TYPE = #{paid_type}
</if>
<if test="search_partNo != null and search_partNo != ''">
AND UPPER(PART_NO) LIKE UPPER('%${search_partNo}%')
</if>
<if test="search_partName != null and search_partName != ''">
AND UPPER(PART_NAME) LIKE UPPER('%${search_partName}%')
</if>
<if test="search_serialNo != null and search_serialNo != ''">
AND UPPER(SERIAL_NO) LIKE UPPER('%${search_serialNo}%')
</if>
<if test="receipt_start_date != null and !''.equals(receipt_start_date)">
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{receipt_start_date}, 'YYYY-MM-DD')
</if>
<if test="receipt_end_date != null and !''.equals(receipt_end_date)">
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{receipt_end_date}, 'YYYY-MM-DD')
</if>
<if test="due_start_date != null and !''.equals(due_start_date)">
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{due_start_date}, 'YYYY-MM-DD')
</if>
<if test="due_end_date != null and !''.equals(due_end_date)">
AND TO_DATE(DUE_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{due_end_date}, 'YYYY-MM-DD')
</if>
ORDER BY REGDATE DESC
</select>
<!-- 영업정보 조회 (수주등록용) -->
<select id="getContractInfo" parameterType="map" resultType="map">
SELECT
OBJID,
CONTRACT_NO,
CONTRACT_CURRENCY,
(SELECT CODE_NAME FROM TB_CODE WHERE CODE_ID = CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME,
EXCHANGE_RATE,
QUANTITY,
PART_NO,
PART_NAME,
-- 수주정보 (기존 컬럼 활용)
CONTRACT_RESULT,
PO_NO,
ORDER_DATE,
ORDER_UNIT_PRICE,
ORDER_SUPPLY_PRICE,
ORDER_VAT,
ORDER_TOTAL_AMOUNT
FROM CONTRACT_MGMT
WHERE OBJID = #{objId}
</select>
<!-- 수주정보 조회 -->
<select id="getOrderInfo" parameterType="map" resultType="map">
SELECT
OBJID,
CONTRACT_NO,
CONTRACT_RESULT,
PO_NO,
ORDER_DATE,
QUANTITY,
ORDER_UNIT_PRICE AS UNIT_PRICE,
ORDER_SUPPLY_PRICE AS SUPPLY_PRICE,
ORDER_VAT AS VAT,
ORDER_TOTAL_AMOUNT AS TOTAL_AMOUNT,
CONTRACT_CURRENCY AS CURRENCY,
EXCHANGE_RATE
FROM CONTRACT_MGMT
WHERE OBJID = #{objId}
</select>
<!-- 수주정보 업데이트 -->
<update id="updateOrderInfo" parameterType="map">
UPDATE CONTRACT_MGMT
SET
CONTRACT_RESULT = #{contract_result},
PO_NO = #{po_no},
ORDER_DATE = #{order_date},
QUANTITY = #{quantity},
ORDER_UNIT_PRICE = #{unit_price},
ORDER_SUPPLY_PRICE = #{supply_price},
ORDER_VAT = #{vat},
ORDER_TOTAL_AMOUNT = #{total_amount},
CONTRACT_CURRENCY = #{contract_currency},
EXCHANGE_RATE = #{exchange_rate}
WHERE OBJID = #{contractObjId}
</update>
</mapper>