0
    public static void insertInboundJive(Map<Id, String> mapCases){
    try{

        system.debug('Aditya');
        Map<Id, String> mapCases1 = new Map<Id, String>();
        Map<Id, Integer> mapIncrements = new Map<Id, Integer>();
        //List<ICS_Case_Interaction__c> lstCaseInteraction;
        if(mapCases != null && mapCases.size() > 0) {
        List<ICS_Case_Interaction__c> lstCaseInteraction  = [ SELECT Id,case__r.origin FROM ICS_Case_Interaction__c Where case__r.Id =:mapCases.keySet()];
            for(ICS_Case_Interaction__c caseInteracts :lstCaseInteraction ){
                if(caseInteracts.case__r.Id != null && caseInteracts.case__r.Status == 'New Customer Message'){
                    system.debug('**AdityaDebug**' +caseInteracts.case__r.Id);
                    system.debug('**AdityaDebug**' +caseInteracts.case__r.Status);
                    mapcases1.put(caseInteracts.case__r.Id , TYPE_JIVE_INBOUND);
                    Integer intIncrement = mapIncrements.get(caseInteracts.case__r.Id);
                    system.debug('Increment' +intIncrement);
                    if(intIncrement != null){
                        intIncrement++;
                        system.debug('Increment++' +intIncrement);
                    }
                    else {
                        intIncrement = 1;
                    }
                     mapIncrements.put(caseInteracts.case__r.Id, intIncrement);
                }
            }
            if(mapCases.size() > 0) {
                insertByCaseAsync(mapCases, mapIncrements);
            }
        }
    }
    catch(Exception ex){
        Core_Log_Entry.logEntryWithException('Case Interaction Metrics', 'CaseInteraction','insertInboundEmail', 'Error', null, null, ex);
    }

}

这是我在课堂上的方法。我试图在触发器中调用 apex 方法。但它抛出了错误。请你帮我并尝试达到最佳状态。

我得到的错误是第 188 行,第 106 列。方法不存在或签名不正确:来自 ICS_Case_Interactions_Trigger_Handler 类型的 void insertInboundJive(List)

if(trigger.isUpdate) {

if(Label.ICS_Case_Interaction_Metrics.equals('1')) {ICS_Case_Interactions_Trigger_Handler.insertInboundJive(trigger.new);} }

4

1 回答 1

1

您正在尝试传递错误的参数。在您定义的方法中,当被调用时,您需要传递一个值为 String 的 Map,但是您传递的是 Trigger.new,它是一个对象列表。我的方法是在触发器中处理映射,然后在控制器中操作数据:

在这种情况下,您可以执行以下操作来传递记录并在控制器中获取所需的数据字符串。或者在触发器中执行此操作,这样您就不会更改控制器。

Map<Id,Contact> map = new Map<Id,ICS_Case_Interaction__c>();  // new map

for(ICS_Case_Interaction__c con :trigger.new){  
    map.put(con.Id, con);  // enter the records you need for the method
}

if(trigger.isUpdate) {
        if(Label.ICS_Case_Interaction_Metrics.equals('1')) {
    ICS_Case_Interactions_Trigger_Handler.insertInboundJive(map);
        } 
    }

在控制器中你应该有

public static void insertInboundJive(Map<Id, ICS_Case_Interaction__c> mapCases){
}
于 2018-04-04T15:14:58.853 回答