D C
2023-05-26 9a0ef802a678ffc421fc1d416f7f867e89e5536a
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
trigger RentalApplyOtherTrigger on Rental_Apply__c (before insert, before update, after insert, after update, after delete) {
    if((!Test.isRunningTest())&&UserInfo.getUserId()==System.Label.ByPassTrigger){
        return;
    }
    //SWAG-B3U63C 2018/8/21 更新学会培训的申请备品申请单数 start
    if (Trigger.isAfter) {
        list<id> CampaignID = new list<id>();
        if (Trigger.isInsert || Trigger.isUndelete ) {
            for (Rental_Apply__c local : Trigger.New) {
                if (String.isNotEmpty(local.Campaign__c)){
                    CampaignID.add(local.Campaign__c);
                }
            }
        }
        if (Trigger.isUpdate || Trigger.isDelete) {
            for (Rental_Apply__c local : Trigger.old) {
                // 2020/11/3 songxiaoqi start 更新申请时,更新前不是取消,然后更新成取消的时候计算
                Rental_Apply__c news =null;
                if (Trigger.isUpdate) {
                    news = Trigger.newMap.get( local.Id );
                }
                // 两种情况需要更新:
                // 1、删除并且 old包含学会培训;
                // 2、更新,new 或 old 中包含学会培训,并且状态发生变化 ;
                if (
                    (Trigger.isDelete &&
                     String.isNotEmpty( local.Campaign__c )
                    )
                    ||
                    (Trigger.isUpdate &&
                     (String.isNotEmpty(local.Campaign__c) ||
                      String.isNotEmpty(news.Campaign__c)
                     ) &&
                     (
                         (local.RA_Status__c !=news.RA_Status__c
                          && news.RA_Status__c=='取消')||
                         (local.Request_approval_day__c != news.Request_approval_day__c) ||
                         (local.Campaign__c != news.Campaign__c )
                     )
                    )
                ){
                    // 2020/11/3 songxiaoqi end
                    // 如果老的备品借出申请的学会不为空,加入
                    if( String.isNotEmpty( local.Campaign__c ) ){
                        CampaignID.add( local.Campaign__c );
                    }
                    // 如果新的备品借出申请的学会不为空,加入
                    if( String.isNotEmpty( news.Campaign__c ) ){
                        CampaignID.add( news.Campaign__c );
                    }
                }
            }
        }
        if (CampaignID.size () > 0) {
            List<AggregateResult> TemRentalApplies =
                [select Count(Id) Cnt_Id, Campaign__c, min(Request_approval_day__c) RADay
                 from Rental_Apply__c
                 where Campaign__c in: CampaignID
                 and RA_Status__c != '取消'
                 group by Campaign__c
                ];
            map<id, list<string>> TemRentalAppliesMap = new map<id, list<string>>();
            for (AggregateResult TemRentalApply : TemRentalApplies) {
                list<string> temStringList = new list<string>();
                temStringList.add(string.valueOf( TemRentalApply.get('Cnt_Id')));
                if (TemRentalApply.get('RADay') != null) {
                    temStringList.add(((Date)TemRentalApply.get('RADay')).format());
                }
                TemRentalAppliesMap.put( (ID) TemRentalApply.get('Campaign__c'),
                                        temStringList);
            }
            list<Campaign> UpdateCampaignList = new list<Campaign>();
            for (Campaign TemCampaign : [select id, Number_Rental_Apply__c
                                         from Campaign where id in: CampaignID
                                         //2020/11/3 songxiaoqi start 创建申请后,草案中的时候计算单数
                                         and Status != '取消'
                                         //2020/11/3 songxiaoqi end
                                        ]) {
                                            list<string> temStringList = TemRentalAppliesMap.get(TemCampaign.id);
                                            if (temStringList != null) {
                                                integer RentalApplyNumber = integer.valueof(temStringList[0]);
                                                TemCampaign.Number_Rental_Apply__c = RentalApplyNumber;
                                                if (temStringList.size() > 1) {
                                                    Date tempRADay = date.parse(temStringList[1]);
                                                    TemCampaign.Request_approval_day_RA__c = tempRADay;
                                                } else {
                                                    TemCampaign.Request_approval_day_RA__c = null;
                                                }
                                            } else {
                                                TemCampaign.Number_Rental_Apply__c = 0;
                                                TemCampaign.Request_approval_day_RA__c = null;
                                            }
                                            UpdateCampaignList.add(TemCampaign);
                                        }
            if (UpdateCampaignList.size() > 0) {
                upsert UpdateCampaignList;
            }
        }
        //SWAG-B3U63C 2018/8/21 更新学会培训的申请备品申请单数 end
    }
}