public without sharing class RepairDetailsTriggerHandler { public static String setNumber(List newList, Map newMap, List oldList, Map oldMap){ //system.debug('setNumber'); Map> repairMap = new Map>(); for(RepairDetails__c repd : newList){ if(repairMap.containsKey(repd.Repair__c)){ repairMap.get(repd.Repair__c).add(repd); }else{ repairMap.put(repd.Repair__c, new List()); repairMap.get(repd.Repair__c).add(repd); } //system.debug(repairMap); } if(repairMap.size() > 0){ //count(id) 不为0时修改Name Set rep = repairMap.keySet(); List repair = [select count(id) ID ,Repair__c from RepairDetails__c where Repair__c =: rep group by Repair__c]; List repdList = [select Repair__c, Repair__r.name from RepairDetails__c where Repair__c =: rep]; Map id_name = new Map(); //system.debug(repair); //system.debug(repdList); for(RepairDetails__c rd : repdList){ id_name.put(rd.Repair__c, rd.Repair__r.Name); } List overID = new List(); //system.debug(id_name); for(AggregateResult ar : repair){ String rep1 = (String)ar.get('repair__c'); List repairDList = repairMap.get(rep1); //system.debug(repairDList); Integer num = (Integer)ar.get('ID') == null ? 0 : (Integer)ar.get('ID'); //system.debug(rep1+'--------'+num); for(RepairDetails__c red : repairDList){ red.Name = id_name.get(rep1) + (num > 8 ? '-'+(++num) : '-0'+(++num)); } overID.add(rep1); repairMap.put(rep1, repairDList); } //count(id)为null时设置ID; List newID = new List(); if(overID.size() == 0){ newId.addAll(repairMap.keySet()); }else{ for(String id : repairMap.keySet()){ if(overID.contains(id) == false){ newID.add(id); } } } if(newID.size()>0){ List needList = [select id,Name from Repair__c where id =: newID]; for(Repair__c re : needList){ Integer i = 1; for(RepairDetails__c red : repairMap.get(re.id)){ red.Name = re.Name + (i > 9 ? '-'+(i++) : '-0'+(i++)); } } } //system.debug(newList); } return ''; } }