global class CampaignUpsertContactToSapBatch implements Database.Batchable, Database.AllowsCallouts { public String query; // 市场活动批量导入联系人,每晚发送给SAP public List contactIdList; global CampaignUpsertContactToSapBatch() { this.query = query; } global CampaignUpsertContactToSapBatch(List contactIdList) { this.contactIdList = contactIdList; } global Database.QueryLocator start(Database.BatchableContext bc) { if (contactIdList != null && contactIdList.size() > 0) { return Database.getQueryLocator([SELECT Id,Name,isBatch__c,CampaignUpsertContact__c FROM Contact WHERE Id IN : contactIdList]); } else { return Database.getQueryLocator([SELECT Id,Name,isBatch__c,CampaignUpsertContact__c FROM Contact WHERE CampaignUpsertContact__c = true ]); } } global void execute(Database.BatchableContext BC, List contactList) { if (contactList != null && contactList.size() > 0){ List contactIdListToSAP = new List(); for (Contact con:contactList) { con.CampaignUpsertContact__c = false; contactIdListToSAP.add(con.Id); } SBG001TriggerHandler.calloutContactNotFuture(null,contactIdListToSAP); update contactList; } } global void finish(Database.BatchableContext BC) { } }