trigger RentalApplyOtherTrigger on Rental_Apply__c (before insert, before update, after insert, after update, after delete) { 
 | 
    //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 
 | 
    } 
 | 
} 
 |