高章伟
2023-03-03 d8dc84a3d56df839895f1c417a4d9cbee763d262
force-app/main/default/classes/RepairQuoteTrigger.cls
@@ -10,6 +10,8 @@
            if(Trigger.isUpdate && rq.ListPrice__c != oldMap.get(rq.id).ListPrice__c){
               //rqIds.add(rq.id);
               flag = true;
               rqIds.add(rq.id);
               RqMap.put(rq.id, rq);
            }
         }
         if(flag == false){
@@ -17,8 +19,8 @@
            }
            for(Repair_Quotation__c rq : newList){
            if(Trigger.isUpdate && rq.ListPrice__c != oldMap.get(rq.id).ListPrice__c){
               rqIds.add(rq.id);
               RqMap.put(rq.id, rq);
               // rqIds.add(rq.id);
               // RqMap.put(rq.id, rq);
            }
         }
      }else if(Trigger.isInsert){
@@ -43,4 +45,88 @@
      }
      System.debug('===========> end');
   }
   public static void SendEmailForRentalApproval(List<Repair_Quotation__c> newList, Map<Id, Repair_Quotation__c> newMap, List<Repair_Quotation__c> oldList, Map<Id, Repair_Quotation__c> oldMap) {
      Set<Id> repairIds = new Set<Id>();
      List<Repair_Quotation__c> repairQuotationList = new List<Repair_Quotation__c>();
      for(Repair_Quotation__c rq : newList) {
         if(Trigger.isUpdate
            && rq.Rental_Apply_Discount_Status__c != oldMap.get(rq.id).Rental_Apply_Discount_Status__c
            && rq.Rental_Apply_Discount_Status__c == '批准'){
            repairIds.add(rq.Repair__c);
            repairQuotationList.add(rq);
         }
      }
      if(repairIds.size() > 0){
         //查询修理中对应的选择的服务方式和维修中心
         Map<Id, Repair__c> repairMap = new Map<Id, Repair__c>([
                  select id,On_site_repair__c,work_location_select__c
                  from Repair__c
                  where Id in :repairIds]);
         List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();
         // 获取Email Template
         EmailTemplate et = [Select id from EmailTemplate where name = '备品减价申请---批准通过' limit 1];
         // Email
         String userEmail = null;
         for (Repair_Quotation__c rqTemp :repairQuotationList) {
            String addToEmail = null;
            userEmail = rqTemp.RentalApplyDiscountApplyPersonEmail_sys__c;
            if (!repairMap.isEmpty() && repairMap.containsKey(rqTemp.Repair__c)) {
               // 服务方式
               String siteRepair = repairMap.get(rqTemp.Repair__c).On_site_repair__c;
               // 维修中心
               String workLocation = repairMap.get(rqTemp.Repair__c).work_location_select__c;
               if (siteRepair == '直送OGZ修理') {
                  // 办事处通知组群设定OGZ
                  addToEmail = System.Label.EmailForRentalApproval_OGZ;
               } else if (siteRepair == '直送SORC修理') {
                  // 办事处通知组群设定SORC
                  addToEmail = System.Label.EmailForRentalApproval_SORC;
               } else if (siteRepair == 'RC修理') {
                  if (workLocation == '上海办事处') {
                     // 上海办事处
                     addToEmail = System.Label.EmailForRentalApproval_RC_SH;
                  } else if (workLocation == '杭州办事处') {
                     // 杭州办事处 + 上海办事处
                     addToEmail = System.Label.EmailForRentalApproval_RC_HZ + ';' + System.Label.EmailForRentalApproval_RC_SH;
                  } else if (workLocation == '广东办事处') {
                     // 广东办事处
                     addToEmail = System.Label.EmailForRentalApproval_RC_GZ;
                  } else if (workLocation == '成都办事处') {
                     // 成都办事处 + 广东办事处
                     addToEmail = System.Label.EmailForRentalApproval_RC_CD + ';' + System.Label.EmailForRentalApproval_RC_GZ;
                  } else if (workLocation == '北京办事处') {
                     // 北京办事处
                     addToEmail = System.Label.EmailForRentalApproval_RC_BJ;
                  } else if (workLocation == '沈阳办事处') {
                     // 沈阳办事处
                     addToEmail = System.Label.EmailForRentalApproval_RC_SY;
                  } else if (workLocation == '西安办事处') {
                     // 西安办事处
                     addToEmail = System.Label.EmailForRentalApproval_RC_XA;
                  }
               }
            }
            if (String.isNotBlank(addToEmail)) {
               userEmail = userEmail + ';' + addToEmail;
            }
            String[] toAddresses = userEmail.split(';');
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
            mail = Messaging.renderStoredEmailTemplate(et.Id, null , rqTemp.Id);
            mail.setSaveAsActivity(false);
            mail.setToAddresses(toAddresses);
            emails.add(mail);
         }
         Messaging.sendEmail(emails);
      }
   }
}