update SA_DELIVER sd
set sd.del_flag = 1,
sd.PK_MODIFIED = #{userId},
sd.MODIFIED_TIME = sysdate
where sd.del_flag = 0
and sd.pk_id = #{pkDeliver}
and (select nvl(count(sdi.pk_deliver), 0)
from SA_DELIVER_ITEMS sdi
where sdi.del_flag = 0
and sdi.pk_country = #{pkCountry}
and sdi.pk_deliver = #{pkDeliver}) = 0
MERGE INTO SA_DELIVER sd
using (
select
#{item.pkId} PK_ID,
#{item.logisticsCode} LOGISTICS_CODE,
#{item.logisticsCompany} LOGISTICS_COMPANY,
#{item.deliverStatus} DELIVER_STATUS
from dual
) tmp
ON (tmp.PK_ID = sd.pk_id and sd.PK_COUNTRY = #{pkCountry})
WHEN MATCHED THEN
update
set sd.logistics_code = tmp.LOGISTICS_CODE,
sd.logistics_company = tmp.LOGISTICS_COMPANY,
sd.DELIVER_STATUS = tmp.DELIVER_STATUS,
sd.DELIVER_TIME = sysdate,
sd.PK_MODIFIED = #{userId},
sd.MODIFIED_TIME = sysdate
MERGE INTO SA_DELIVER
USING (
select
#{item.pkId} pkId,
#{item.deliverCode} deliverCode,
#{item.recName, jdbcType=VARCHAR} recName,
#{item.recPhone, jdbcType=VARCHAR} recPhone,
#{item.recProvince,jdbcType=NUMERIC} recProvince,
#{item.recCity,jdbcType=NUMERIC} recCity,
#{item.recCounty,jdbcType=NUMERIC} recCounty,
#{item.recAddress, jdbcType=VARCHAR} recAddress,
#{item.tranType,jdbcType=NUMERIC} tranType,
#{item.pkCountry} pkCountry,
#{item.pkCreator} pkCreator,
#{item.creationTime} creationTime,
#{item.pkModified} pkModified,
#{item.modifiedTime} modifiedTime,
#{item.dayBatch} dayBatch,
#{item.batchNumber} batchNumber
from dual
) tmp
ON (0 = 1)
WHEN NOT MATCHED THEN
insert (PK_ID,
DELIVER_CODE,
REC_NAME,
REC_PHONE,
REC_PROVINCE,
REC_CITY,
REC_COUNTY,
REC_ADDRESS,
TRAN_TYPE,
PK_COUNTRY,
PK_CREATOR,
CREATION_TIME,
PK_MODIFIED,
MODIFIED_TIME,
DAY_BATCH,
BATCH_NUMBER)
values (
tmp.pkId,
tmp.deliverCode,
tmp.recName,
tmp.recPhone,
tmp.recProvince,
tmp.recCity,
tmp.recCounty,
tmp.recAddress,
tmp.tranType,
tmp.pkCountry,
tmp.pkCreator,
tmp.creationTime,
tmp.pkModified,
tmp.modifiedTime,
tmp.dayBatch,
tmp.batchNumber)
update sa_deliver sd
set sd.print_status = #{printStatus},
sd.print_time = sysdate,
sd.pk_modified = #{userId},
sd.modified_time = sysdate
where sd.pk_country = #{pkCountry}
and (sd.pk_id in
) or sd.pk_id IN (
,
#{item}
)