收藏Pankaj Jha (AlmaMate Info Tech) 提问于 #Apex2020年5月1日 10:35how to merge duplicate lead with batch apex based on email ?Hi friends,I am new in salesforce, if you know plz reply.thanks in advance.how to merge duplicate lead with batch apex based on email ?global class LeadBatchAviodDuplicacy implements Database.Batchable<sObject> {public String queryString;global Database.QueryLocator start(Database.BatchableContext BC) { queryString = 'SELECT Id, Name, Email FROM Lead '; return Database.getQueryLocator(queryString);} global void execute(Database.BatchableContext BC, List<Lead> obj) {Map<String,List<Lead>> LeadMap = new Map<String,List<Lead>>(); Set<String> LeadName = new Set<String>(); Set<String> LeadEmail = new Set<String>(); for(Lead a :obj){ LeadName.add(a.Name.toLowerCase()); if(String.isnotblank(a.Email)) LeadEmail.add(a.Email.toLowerCase()); } //Get All non formula fields of Lead String sobjectApiName = 'Lead'; Map<String, Schema.SObjectType> schemaMap = Schema.getGlobalDescribe(); Map<String, Schema.SObjectField> fieldMap = schemaMap.get(SobjectApiName).getDescribe().fields.getMap(); List<String> fieleList = new List<String>(); for(String fieldName : fieldMap.keySet()){ Schema.DescribeFieldResult fieldResult = fieldMap.get(fieldName).getDescribe(); if(!fieldResult.isCalculated() && fieldResult.isCreateable() && !fieldResult.isExternalId()&& fieldResult.isUpdateable()){ fieleList.add(fieldName); } /*if(fieldName != 'isPartner' && fieldName != 'IsCustomerPortal'){ fieleList.add(fieldName); }*/ } String fetchFields = 'SELECT '+String.join(fieleList,',')+' FROM '+sobjectApiName+' WHERE Email IN :LeadEmail'; integer i = 1; for(Lead a : Database.query(fetchFields)){ String key = a.Email; key = key.toLowerCase(); if(LeadMap.containsKey(key)){ LeadMap.get(key).add(a); }else { LeadMap.put(key,new List<Lead>{a}); } i++; } System.debug('i >'+i);System.debug('LeadMap >> '+LeadMap); List<Lead> mergeList;for(String key : LeadMap.keySet()){ System.debug('Size >>'+ LeadMap.get(key).size()); if(LeadMap.get(key).size()>1 ){ mergeList = new List<Lead>(); Lead masterLead = LeadMap.get(key)[0]; mergeList.addAll(LeadMap.get(key)); mergeList.remove(0); System.debug('mergeList >> '+mergeList); for(Lead a : mergeList){ Database.MergeResult mergeResult = Database.merge(masterLead, a, true); } }}//if(mergeList.size()>0)// update mergeList;}global void finish(Database.BatchableContext BC) {}}I'm unable to map fields and feed fields. 显示更多3 个回答排序按日期排序按最有帮助排序按日期排序加载更多评论...Deepesh Bairathee (Student)2021年5月6日 10:54Hello,did you solve this.I am aslo not able to merge field like phone, fax etc while merging contact. if you have solved this problem then kindly help me also.添加评论撰写回答...粗体斜体下划线删除线项目符号列表编号列表添加链接代码块插入图像附加文件链接 URL取消保存0/9000回复
Deepesh Bairathee (Student)2021年5月6日 10:54Hello,did you solve this.I am aslo not able to merge field like phone, fax etc while merging contact. if you have solved this problem then kindly help me also.