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