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}
        
        )