trigger ConsumableOrderTrigger on Consumable_order__c (before insert, before update) { 
 | 
    if (StaticParameter.EscapeConsumableOrderDetail2Trigger) { 
 | 
        return; 
 | 
    } 
 | 
    //add by rentx 20210618 start 
 | 
    if (StaticParameter.ConsumableOrderTrigger) { 
 | 
        return; 
 | 
    } 
 | 
    //ad by rentx 20210618 end 
 | 
    Set<String> contactIdSet = new Set<String>(); 
 | 
    Map<String, String> rprIdList = new Map<String, String>(); 
 | 
    Map<String, String> contactIdMap = new Map<String, String>(); 
 | 
    List<Statu_Achievements__c> sAlist = new List<Statu_Achievements__c>(); 
 | 
    if (Trigger.isBefore) { 
 | 
        Account contactdet = null; 
 | 
        List<Account> contactList = new List<Account>(); 
 | 
        Consumable_order__c old = null; 
 | 
        for (Consumable_order__c local : Trigger.New) { 
 | 
            if(String.isNotBlank(local.Order_effective_contact__c)) { 
 | 
                contactIdSet.add(local.Order_effective_contact__c); 
 | 
            } 
 | 
        } 
 | 
        // contactList = [SELECT Id, Name, Business_Assistant__c FROM Account WHERE Id in :contactIdSet]; 
 | 
        // for(Account acc :contactList){ 
 | 
        //     if(String.isNotBlank(acc.Business_Assistant__c)){ 
 | 
        //         contactIdMap.put(acc.Id, acc.Business_Assistant__c); 
 | 
        //     } 
 | 
        // } 
 | 
  
 | 
        Map<String,List<Statu_Achievements__c> > sAmap = new Map<String,List<Statu_Achievements__c> >(); 
 | 
        Map<String,String> zMaps = new Map<String,String>(); 
 | 
  
 | 
        for (Consumable_order__c local : Trigger.New) { 
 | 
            if(String.isNotBlank(local.Opportunity__c) && String.isNotBlank(local.name)) { 
 | 
                zMaps.put(local.Opportunity__c,local.name); 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
        sAlist = [SELECT ContractNO__c,Opportunity__c FROM Statu_Achievements__c WHERE Opportunity__c = :zMaps.keySet()]; 
 | 
  
 | 
        for(Statu_Achievements__c sa : sAlist) { 
 | 
            List<Statu_Achievements__c> ssList = sAmap.get(zMaps.get(sa.Opportunity__c)); 
 | 
            if(ssList == null) { 
 | 
                ssList = new List<Statu_Achievements__c>(); 
 | 
            } 
 | 
            ssList.add(sa); 
 | 
            sAmap.put(zMaps.get(sa.Opportunity__c),ssList); 
 | 
        } 
 | 
  
 | 
        // sAlist = [SELECT ContractNO__c FROM Statu_Achievements__c WHERE Opportunity__c = :opps]; 
 | 
        // sAmap.put(name,sAlist); 
 | 
  
 | 
        for (Consumable_order__c local : Trigger.New) { 
 | 
            if (Trigger.isInsert) { 
 | 
                rprIdList.put(local.Id, local.Id); 
 | 
            } 
 | 
            if (Trigger.isUpdate) { 
 | 
                old = Trigger.oldMap.get(local.Id); 
 | 
            } 
 | 
            // 「消耗品订单」になったとき、ログインユーザーからプロセス用の上司を設定 
 | 
            if ((Trigger.isInsert 
 | 
                 || old.Order_status__c != local.Order_status__c) 
 | 
                && local.Order_status__c == '附件上传完成' 
 | 
                )   { 
 | 
                //if (contactdet == null) { 
 | 
                //    contactdet = [SELECT Id, Name, Business_Assistant__c FROM Account WHERE Id = :local.Order_effective_contact__c]; 
 | 
                //} 
 | 
                if(local.Business_Assistant__c == null) { 
 | 
                    local.addError('合同没有有效的营业助理。'); 
 | 
                    continue; 
 | 
                }else{ 
 | 
                    local.SalesManager__c = local.Business_Assistant__c; 
 | 
                } 
 | 
                // 項目の新規追加したくない、API名も変更したくない、ラベル名を変更、User.服务→修理.服务 
 | 
                //local.SalesManager__c = contactdet.SalesManager__c == null ? contactdet.Id : contactdet.SalesManager__c; 
 | 
                //local.BuchangApprovalManagerSales__c = loginUser.BuchangApprovalManager__c == null ? loginUser.Id : loginUser.BuchangApprovalManager__c; 
 | 
                //local.ZongjianApprovalManager__c = loginUser.ZongjianApprovalManager__c == null ? loginUser.Id : loginUser.ZongjianApprovalManager__c; 
 | 
                //local.TongkuoZongjian__c = loginUser.TongkuoZongjian__c == null ? loginUser.Id : loginUser.TongkuoZongjian__c; 
 | 
            } 
 | 
  
 | 
            //更新or插入 前 
 | 
            if(Trigger.isInsert || Trigger.isUpdate ) { 
 | 
                List<String> cNList = new List<String>(); 
 | 
                List<Statu_Achievements__c> sas = sAmap.get(local.name); 
 | 
  
 | 
                if(sas != null) { 
 | 
                    for (Statu_Achievements__c sa : sas) { 
 | 
                        //保存合同编号 
 | 
                        cNList.add(sa.ContractNO__c); 
 | 
                    } 
 | 
  
 | 
                    //拼接合同编号 
 | 
                    String cNs = String.join(cNList,','); 
 | 
                    local.ContractNo__c = cNs; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |