GWY
2022-05-21 a3460549533111815e7f73d6cef601a58031525d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
public without sharing class RepairDetailsTriggerHandler {
    public static String setNumber(List<RepairDetails__c> newList, Map<Id, RepairDetails__c> newMap, List<RepairDetails__c> oldList, Map<Id, RepairDetails__c> oldMap){
        //system.debug('setNumber');
        Map<String,List<RepairDetails__c>> repairMap = new Map<String,List<RepairDetails__c>>();
        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<RepairDetails__c>());
                repairMap.get(repd.Repair__c).add(repd);
            }
            //system.debug(repairMap);
        }
        if(repairMap.size() > 0){
            //count(id) 不为0时修改Name
            Set<String> rep = repairMap.keySet();
            List<AggregateResult> repair = [select count(id) ID ,Repair__c from RepairDetails__c where Repair__c =: rep group by Repair__c];
            List<RepairDetails__c> repdList = [select Repair__c, Repair__r.name from RepairDetails__c where Repair__c =: rep];
            Map<String,String> id_name = new Map<String,String>();
            //system.debug(repair);
            //system.debug(repdList);
            for(RepairDetails__c rd : repdList){
                id_name.put(rd.Repair__c, rd.Repair__r.Name);
            }
            List<String> overID = new List<String>();
            //system.debug(id_name);
            for(AggregateResult  ar : repair){
                String rep1 = (String)ar.get('repair__c');
                List<RepairDetails__c> 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<String> newID = new List<String>();
            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<Repair__c> 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 '';   
    }
}