auto commit

This commit is contained in:
2025-10-15 16:00:50 +09:00
parent 2f20549444
commit b0383d3479

View File

@@ -486,8 +486,57 @@
,CODE_NAME(AREA_CD) AS AREA_NAME
,MECHANICAL_TYPE
,OVERHAUL_ORDER
,PAID_TYPE
,RECEIPT_DATE
,PART_NO
,PART_NAME
,SERIAL_NO
,QUANTITY
,CUSTOMER_REQUEST
,EXCHANGE_RATE
,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>
@@ -519,21 +568,27 @@
<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 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="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 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 !=''">
@@ -600,7 +655,46 @@
</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>
<!-- 견적관리 추가 검색조건 -->
<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>
@@ -724,9 +818,193 @@
</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
,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
)
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}
,#{paid_type}
,#{receipt_date}
,#{part_no}
,#{part_name}
,#{serial_no}
,#{quantity}
,#{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}
,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}
,PAID_TYPE = #{paid_type}
,RECEIPT_DATE = #{receipt_date}
,PART_NO = #{part_no}
,PART_NAME = #{part_name}
,SERIAL_NO = #{serial_no}
,QUANTITY = #{quantity}
,CUSTOMER_REQUEST = #{customer_request}
,EXCHANGE_RATE = #{exchange_rate}
</update>
<update id="saveContractMgmtInfo_old" parameterType="map">
INSERT INTO CONTRACT_MGMT
(
OBJID
,CATEGORY_CD
@@ -1096,6 +1374,14 @@
,CUSTOMER_PRODUCTION_NO
,MECHANICAL_TYPE
,OVERHAUL_ORDER
,PAID_TYPE
,RECEIPT_DATE
,PART_NO
,PART_NAME
,SERIAL_NO
,QUANTITY
,CUSTOMER_REQUEST
,EXCHANGE_RATE
,(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
@@ -3376,5 +3662,218 @@ ORDER BY ASM.SUPPLY_NAME
-->
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,
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 = #{objId}::NUMERIC
</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}::NUMERIC
<if test="template_type != null and template_type != ''">
AND TEMPLATE_TYPE = #{template_type}
</if>
ORDER BY REGDATE DESC
LIMIT 1
</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}::NUMERIC
)
ORDER BY SEQ
</select>
<!-- 견적서 템플릿 저장 -->
<insert id="insertEstimateTemplate" parameterType="map">
INSERT INTO ESTIMATE_TEMPLATE (
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 (
#{objId}::NUMERIC,
#{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
CONTRACT_OBJID = #{objId}::NUMERIC
AND TEMPLATE_TYPE = #{template_type}
</update>
<!-- 견적서 템플릿 품목 삭제 -->
<delete id="deleteEstimateTemplateItems" parameterType="map">
DELETE FROM ESTIMATE_TEMPLATE_ITEM
WHERE
TEMPLATE_OBJID IN (
SELECT OBJID
FROM ESTIMATE_TEMPLATE
WHERE CONTRACT_OBJID = #{objId}::NUMERIC
)
</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
(SELECT OBJID FROM ESTIMATE_TEMPLATE WHERE CONTRACT_OBJID = #{objId}::NUMERIC AND TEMPLATE_TYPE = #{template_type}),
(json_array_elements(#{items_json}::json)->>'seq')::INTEGER,
json_array_elements(#{items_json}::json)->>'category',
json_array_elements(#{items_json}::json)->>'description',
json_array_elements(#{items_json}::json)->>'specification',
json_array_elements(#{items_json}::json)->>'quantity',
json_array_elements(#{items_json}::json)->>'unit',
(json_array_elements(#{items_json}::json)->>'unit_price')::NUMERIC,
(json_array_elements(#{items_json}::json)->>'amount')::NUMERIC,
json_array_elements(#{items_json}::json)->>'note',
json_array_elements(#{items_json}::json)->>'remark'
</insert>
<!-- 견적서 템플릿 카테고리 업데이트 (장비 견적서용) -->
<update id="updateEstimateTemplateCategories" parameterType="map">
UPDATE ESTIMATE_TEMPLATE
SET
CATEGORIES_JSON = #{categories_json},
CHG_USER_ID = #{chg_user_id},
CHGDATE = NOW()
WHERE
CONTRACT_OBJID = #{objId}::NUMERIC
AND TEMPLATE_TYPE = #{template_type}
</update>
</mapper>