Salesforce 获取重复的代理名称

Salesforce 获取重复的代理名称,salesforce,apex-code,Salesforce,Apex Code,我在这里使用map,无法理解如何解决重复的名称,我想要一个代理名称与付款数量(opp的子项)相对应 如何获取用户的唯一名称 public class First_Pay_ClearRates_Controller { @AuraEnabled public static Map<Id,User> fetchUsers() { // List<User> userList= [SELECT Id, Name FROM User WHERE P

我在这里使用map,无法理解如何解决重复的名称,我想要一个代理名称与付款数量(opp的子项)相对应

如何获取用户的唯一名称

 public class First_Pay_ClearRates_Controller {
      @AuraEnabled
    public static Map<Id,User> fetchUsers() {
     // List<User> userList= [SELECT Id, Name FROM User WHERE Profile.Name = 'Sales' LIMIT 20];
    Map<Id,User> userMap= new Map<Id,User>([SELECT Id, Name FROM User WHERE Profile.Name = 'Sales' LIMIT 20]);  
        return userMap;
    }

  @AuraEnabled
    public static List<Opportunity> getOpps(Map<Id,User> usrMap){
        Map<Id,List<Opportunity>> oppMap = new Map<Id,List<Opportunity>>();
        List<Opportunity> oppList =  new List<Opportunity>();  
        List<Payments__c> payList= new List<Payments__c>();
         List<Payments__c> payList1= new List<Payments__c>();
        // prev key Agent_Name_User__c
        // AND First_Payment_Date__c=THIS_MONTH
        for(Opportunity o: [SELECT Id,First_Payment_Date__c,OwnerId,Owner.Name ,of_Payments_Made__c,PaymentsCounter__c,CollectedPaymentCount__c,First_Client_Payment_Collected_Date__c From Opportunity WHERE OwnerId IN: usrMap.keyset() AND First_Payment_Date__c!=null LIMIT 20]){ 
            if(!oppMap.containsKey(o.OwnerId)){
                 oppMap.put(o.OwnerId,new List<Opportunity>());   
            }
            o.PaymentsCounter__c=0;
              o.CollectedPaymentCount__c=0;
            //AND Due_Date__c=THIS_MONTH
            for(Payments__c p :[Select Id,Opportunity__c,Payment_Collected__c,Due_Date__c FROM Payments__c WHERE  Opportunity__c =: o.Id ]){
                if(!p.Payment_Collected__c){
                    payList.add(p);
                    o.PaymentsCounter__c= payList.size();
                }else if(p.Payment_Collected__c){
                   payList1.add(p); 
                   o.CollectedPaymentCount__c= payList1.size();
                }        
           }  
            oppList.add(o);
            oppMap.put(o.OwnerId,oppList);
       } 

          return oppList; 
    }
public class First\u Pay\u ClearRates\u Controller{
@可听的
公共静态映射用户(){
//List userList=[从用户配置文件中选择Id、名称。名称='Sales'LIMIT 20];
Map userMap=新地图([从用户WHERE Profile.Name='Sales'LIMIT 20中选择Id、名称]);
返回userMap;
}
@可听的
公共静态列表getOpps(映射usrMap){
Map oppMap=新映射();
List oppList=新列表();
List payList=新列表();
List payList1=新列表();
//上一个密钥代理\u名称\u用户\u c
//第一次付款日期=本月
对于(Opportunity o:[从Opportunity中选择Id、首次付款日期、OwnerId、Owner.Name、付款的次数、付款中心、收款的付款计数、首次客户付款日期、收款日期,其中OwnerId为:usrMap.keyset()和首次付款日期!=空限制20]){
如果(!oppMap.containsKey(o.OwnerId)){
oppMap.put(o.OwnerId,new List());
}
o、 支付中心c=0;
o、 CollectedPaymentCount\uuu c=0;
//到期日=本月
对于(付款计划:[选择Id、Opportunity、Payment、Collected、Due、Date,其中Opportunity=o.Id]){
如果(!p.付款\收款\ c){
工资表。添加(p);
o、 paymentsconter_uuc=payList.size();
}否则,如果(p.付款\收款\ c){
工资表1.添加(p);
o、 CollectedPaymentCount__c=payList1.size();
}        
}  
添加(o);
oppMap.put(o.OwnerId,oppList);
} 
返回列表;
}

您应该从oppMap获取所有者ID的oppList。并填充相同的,不需要再次将oppList放入oppMap中。您也在循环中使用SOQL,但可能会达到SOQL限制。这不是最佳做法。您应该从oppMap获取所有者ID的oppList。并且填充相同的,不需要再次将oppList放入oppMap中。您可以在循环中重新使用SOQL,但可能会达到SOQL限制。这不是最佳实践。