/** * 经销商有效协议判断 */ public without sharing class AccountEffectiveContract { public static void syncAccountContract(List newList, Map newMap, List oldList, Map oldMap) { //取得经销商ID SET Set agencySet = new Set(); if (Trigger.isInsert) { for (Account acc : newList) { if(acc.RecordTypeId == '01210000000QjCN'){ agencySet.add(acc.ParentId); } } }else if (Trigger.isDelete) { for (Account acc : oldList) { if(acc.RecordTypeId == '01210000000QjCN'){ agencySet.add(acc.ParentId); } } }else if(Trigger.isUpdate ){ for (Account acc : newList) { if(acc.RecordTypeId == '01210000000QjCN' && (acc.Delete_Flag__c != oldMap.get(acc.Id).Delete_Flag__c || acc.ET_SP_Dealer__c != oldMap.get(acc.Id).ET_SP_Dealer__c)){ agencySet.add(acc.ParentId); } } for (Account acc : oldList) { if(acc.RecordTypeId == '01210000000QjCN' && (acc.Delete_Flag__c != newMap.get(acc.Id).Delete_Flag__c || acc.ET_SP_Dealer__c != newMap.get(acc.Id).ET_SP_Dealer__c)){ agencySet.add(acc.ParentId); } } } //汇总举要有效契约的经销商数据 if(agencySet.size() > 0){ List accUpList = new List(); List accList = [SELECT Id FROM Account WHERE Id in :agencySet]; AggregateResult[] results = [SELECT ParentId,count(Id) cnt FROM Account WHERE ParentId in :agencySet AND ET_SP_Dealer__c = true AND Is_Active_Formula__c = '有效' group by ParentId]; for(Account acc : accList){ Boolean existFlg = false; for(AggregateResult ar: results){ if(String.valueOf(ar.get('ParentId')) == acc.Id){ if(Integer.valueOf(ar.get('cnt')) > 0){ existFlg = true; break; } } } Account accinfo = new Account(); accinfo.id = acc.Id; accinfo.Agency_With_EffectiveContract__c = existFlg; accUpList.add(accinfo); } System.debug('accUpList+++++' + accUpList.size() + accUpList); if(accUpList.size() > 0){ update accUpList; } } } }