| trigger XinEventOppotunityPileUp on Event_Oppotunity__c (after delete, after update) { | 
|     List<String> oppIds = new List<String>(); | 
|   | 
|     if (Trigger.isDelete) { | 
|         for (Event_Oppotunity__c eo : Trigger.old) { | 
|             oppIds.add(eo.Opportunity__c);               // 必須のはず | 
|         } | 
|     } else { | 
|         for (Event_Oppotunity__c eo : Trigger.new) { | 
|             oppIds.add(eo.Opportunity__c);               // 必須のはず | 
|         } | 
|     } | 
|      | 
|     // 先に親をlockする | 
|     List<Opportunity> opps = new List<Opportunity>(); | 
|     List<Opportunity> oppList = ControllerUtil.oppSelectForLock(oppIds); | 
|   | 
|     // 最大フォロー日 | 
|     // CHAN-BE6CZZ 最后跟进结果 LHJ 20190724 Start | 
|     //AggregateResult[] ar0 = ControllerUtil.selectForOpp_Last_Follow_Up_Date(oppIds); | 
|     //Map<String, DateTime> maxDateMap = new Map<String, DateTime>(); | 
|      | 
|     //for (Integer i = 0; i < ar0.size(); i++) { | 
|     //    maxDateMap.put(String.valueOf(ar0[i].get('Opportunity__c')), Datetime.valueOf(ar0[i].get('maxET'))); | 
|     //} | 
|     List<Event_Oppotunity__c> ar0 = ControllerUtil.selectForOpp_Last_Follow_Up_Date(oppIds); | 
|     Map<String, Event_Oppotunity__c> maxDateMap = new Map<String, Event_Oppotunity__c>(); | 
|   | 
|     for (Integer i = 0; i < ar0.size(); i++) { | 
|         if (!maxDateMap.containsKey(String.valueOf(ar0[i].get('Opportunity__c')))) { | 
|             maxDateMap.put(String.valueOf(ar0[i].get('Opportunity__c')), ar0[i]);  | 
|         } | 
|     } | 
|     // CHAN-BE6CZZ 最后跟进结果 LHJ 20190724 End | 
|   | 
|     // 各種カウント | 
|     Map<String, Integer> cntMap = new Map<String, Integer>();              // 総件数 | 
|     Map<String, Integer> vprCntMap = new Map<String, Integer>();           // 院長件数 | 
|     Map<String, Integer> vhdCntMap = new Map<String, Integer>();           // 主任件数 | 
|     Map<String, Integer> ntcCntMap = new Map<String, Integer>();           // NTC件数 | 
|     AggregateResult[] ar = ControllerUtil.selectEventOppForAggregateFollowToOpp(oppIds); | 
|     for (Integer i = 0; i < ar.size(); i++) { | 
|         cntMap.put(String.valueOf(ar[i].get('Opportunity__c')), Integer.valueOf(ar[i].get('cnt'))); | 
|         vprCntMap.put(String.valueOf(ar[i].get('Opportunity__c')), Integer.valueOf(ar[i].get('vprCnt'))); | 
|         vhdCntMap.put(String.valueOf(ar[i].get('Opportunity__c')), Integer.valueOf(ar[i].get('vhdCnt'))); | 
|         ntcCntMap.put(String.valueOf(ar[i].get('Opportunity__c')), Integer.valueOf(ar[i].get('ntcCnt'))); | 
|     } | 
|      | 
|     for (Opportunity opp : oppList) { | 
|         Boolean needUpd = false; | 
|         // CHAN-BE6CZZ 最后跟进结果 LHJ 20190724 Start | 
|         //if (opp.Xin_Last_Follow_Up_Date_For_Report__c != maxDateMap.get(opp.Id)) { | 
|         //    opp.Xin_Last_Follow_Up_Date_For_Report__c = maxDateMap.get(opp.Id); | 
|         //    needUpd = true; | 
|         //} | 
|         if (maxDateMap.containsKey(opp.Id)  | 
|                 && ((opp.Xin_Last_Follow_Up_Date_For_Report__c != Datetime.valueOf(maxDateMap.get(opp.Id).End_Time__c))  | 
|                 || (opp.Follow_up_comment__c != maxDateMap.get(opp.Id).EventC_ID__r.Description__c))) { | 
|   | 
|             // 最后跟进日期 | 
|             opp.Xin_Last_Follow_Up_Date_For_Report__c = Datetime.valueOf(maxDateMap.get(opp.Id).End_Time__c); | 
|   | 
|             // 最后跟进结果 | 
|             if (String.isNotBlank(maxDateMap.get(opp.Id).EventC_ID__r.Description__c)  | 
|                     && maxDateMap.get(opp.Id).EventC_ID__r.Description__c.length() > 255) { | 
|                 opp.Follow_up_comment__c = maxDateMap.get(opp.Id).EventC_ID__r.Description__c.subString(0,255); | 
|             } else { | 
|                 opp.Follow_up_comment__c = maxDateMap.get(opp.Id).EventC_ID__r.Description__c; | 
|             } | 
|              | 
|             needUpd = true; | 
|         } | 
|         // CHAN-BE6CZZ 最后跟进结果 LHJ 20190724 End | 
|         if (cntMap.containsKey(opp.Id) == false) { | 
|             if (opp.Xin_Gross_Follow_Num__c != 0 | 
|                     || opp.Visit_President_Count__c != 0 | 
|                     || opp.Visit_Head_Doctor_Count__c != 0 | 
|                     || opp.Num_Of_NTC__c != 0 | 
|             ) { | 
|                 opp.Xin_Gross_Follow_Num__c = 0; | 
|                 opp.Visit_President_Count__c = 0; | 
|                 opp.Visit_Head_Doctor_Count__c = 0; | 
|                 opp.Num_Of_NTC__c = 0; | 
|             } | 
|         } else { | 
|             if (opp.Xin_Gross_Follow_Num__c != cntMap.get(opp.Id) | 
|                     || opp.Visit_President_Count__c != vprCntMap.get(opp.Id) | 
|                     || opp.Visit_Head_Doctor_Count__c != vhdCntMap.get(opp.Id) | 
|                     || opp.Num_Of_NTC__c != ntcCntMap.get(opp.Id) | 
|             ) { | 
|                 opp.Xin_Gross_Follow_Num__c = cntMap.get(opp.Id); | 
|                 opp.Visit_President_Count__c = vprCntMap.get(opp.Id); | 
|                 opp.Visit_Head_Doctor_Count__c = vhdCntMap.get(opp.Id); | 
|                 opp.Num_Of_NTC__c = ntcCntMap.get(opp.Id); | 
|             } | 
|         } | 
|         if (needUpd) opps.add(opp); | 
|     } | 
|      | 
|     if (opps.size() > 0) { | 
|         StaticParameter.EscapeNFM007Trigger = true; | 
|         StaticParameter.EscapeOpportunityBefUpdTrigger = true; | 
|         StaticParameter.EscapeOpportunityHpDeptUpdTrigger = true; | 
|         StaticParameter.EscapeSyncOpportunityTrigger = true; | 
| System.debug('XinEventOppotunityPileUpから、商談トリガをEscape'); | 
| System.debug('EscapeNFM007Trigger:::::' + StaticParameter.EscapeNFM007Trigger); | 
| System.debug('EscapeOpportunityBefUpdTrigger:::::' + StaticParameter.EscapeOpportunityBefUpdTrigger); | 
| System.debug('EscapeOpportunityHpDeptUpdTrigger:::::' + StaticParameter.EscapeOpportunityHpDeptUpdTrigger); | 
| System.debug('EscapeSyncOpportunityTrigger:::::' + StaticParameter.EscapeSyncOpportunityTrigger); | 
|         ControllerUtil.updOppList(opps); | 
|     } | 
| } |