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); 
 | 
    } 
 | 
} 
 |