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 CampaignID = new list(); 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 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> TemRentalAppliesMap = new map>(); for (AggregateResult TemRentalApply : TemRentalApplies) { list temStringList = new list(); 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 UpdateCampaignList = new list(); 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 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 } }