张宇恒
2022-12-23 ec47f5ab5923a315bf22e0df5af7371e9668589e
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
/**
 * 用户的评价创建时间和条数在用户表中汇总更新
 */
trigger SmarmSetUserCount on SMARM__c (after insert, before delete) {
    Map<Id, User> userMap = new Map<Id, User>();
    List<Id> userList = new List<Id>();
    List<Id> delSmarmIds = new List<Id>();
    if (Trigger.isAfter) {
        if (Trigger.isInsert) {
            for (SMARM__c m : Trigger.new) {
                if (m.Review_Target__c != null && userMap.containsKey(m.Review_Target__c) == false) {
                    userMap.put(m.Review_Target__c, new User(Id = m.Review_Target__c));
                    userList.add(m.Review_Target__c);
                }
            }
        }
    }
    else {
        for (SMARM__c m : Trigger.old) {
            if (m.Review_Target__c != null && userMap.containsKey(m.Review_Target__c) == false) {
                userMap.put(m.Review_Target__c, new User(Id = m.Review_Target__c));
                userList.add(m.Review_Target__c);
            }
            delSmarmIds.add(m.Id);
        }
    }
    if (userMap.size() > 0) {
        AggregateResult[] arList = ControllerUtil.selectSmarmSetUserCount(userMap.keySet(), delSmarmIds);
        Map<String,AggregateResult> rsMap = new Map<String,AggregateResult>();
        for (AggregateResult ar: arList) {
            rsMap.put(String.valueOf(ar.get('Review_Target')),ar);
        }
        for (string id : userList) {
            if (rsMap.containsKey(id)) {
                User u = userMap.get(String.valueOf(rsMap.get(id).get('Review_Target')));
                u.Smarm_Count__c = Integer.valueOf(rsMap.get(id).get('Cnt_Id'));
                u.Last_Smarm_Date__c = Date.valueOf(rsMap.get(id).get('Max_Report_Date'));
            } else {
                User u = userMap.get(id);
                u.Smarm_Count__c = 0;
                u.Last_Smarm_Date__c = null;
            }
        }
        ControllerUtil.updateUserList(userMap.values());
    }
}