高章伟
2022-03-10 1312ba82d4c880bdb5357d28e0d4af5b285f610f
force-app/main/default/classes/InventorySendMailBatch.cls
@@ -10,26 +10,24 @@
    }
    global Database.QueryLocator start(Database.BatchableContext BC) {
      if (Test.isRunningTest()) {
         return Database.getQueryLocator(
            [select Id, Name, Email, Manager.Email from User where isActive = true and (ProfileId = :System.label.ProfileId_2S6
               or ProfileId = :System.label.ProfileId_2S7 or ProfileId = :System.label.ProfileId_2S8) limit 1]
         );
      } else {
         return Database.getQueryLocator(
            [select Id, Name, Email, Manager.Email from User where isActive = true and (ProfileId = :System.label.ProfileId_2S6
               or ProfileId = :System.label.ProfileId_2S7 or ProfileId = :System.label.ProfileId_2S8)]
         );
      }
      return Database.getQueryLocator(
         [SELECT (select userOrGroupId from groupMembers) FROM group WHERE name = '样本盘点小组']
      );
    }
    global void execute(Database.BatchableContext BC, List<sObject> User) {
        List<User> UserList = User;
    global void execute(Database.BatchableContext BC, List<group> gList) {
      List<String> IdList = new List<String>();
      if (gList != null && gList.size() > 0) {
         for (Group g : gList) {
            for (GroupMember gm : g.groupMembers) {
               IdList.add(gm.userOrGroupId);
            }
         }
      }
        Date toDate = Date.today();
        Integer day = Integer.valueOf(toDate.day());
        if(System.Test.isRunningTest()|| (UserList.size() > 0 && (day == 6 || day == 14))){
         sendMail(UserList);
        if(System.Test.isRunningTest() || (IdList.size() > 0 && (day == 10 || day == 14))){
         sendMail(IdList);
        }   
    }
@@ -62,12 +60,13 @@
         iflog.Log__c += logstr;
         iflog.ErrorLog__c = Errorstr;
      }
      insert iflog;
    }
    public boolean sendMail(List<User> userList) {
    public boolean sendMail(List<String> IdList) {
      boolean rs = true;
      List<User> userList = [select Id, Name, Email, Manager.Email from User where id IN :IdList];
      List<Messaging.SingleEmailMessage> sendMails = new List<Messaging.SingleEmailMessage>();
      for(User user : userList){
         String title = '';
         String body = '';
@@ -85,24 +84,27 @@
         toMailList.add(user.Email);
         //抄送的邮箱
         List<String> ccMailList = new List<String>();
         ccMailList.add(user.Manager.Email);
         List<Messaging.SingleEmailMessage> sendMails = new List<Messaging.SingleEmailMessage>();
         if(user.Manager.Email != null){
            ccMailList.add(user.Manager.Email);
         }
         Messaging.SingleEmailMessage messageNEW = new Messaging.SingleEmailMessage();
         messageNEW.subject = title;
         messageNEW.htmlBody = body;
         messageNEW.setCharset('UTF-8');
         messageNEW.toAddresses = toMailList;
         messageNEW.ccAddresses = ccMailList;
         if(ccMailList.size() > 0){
            messageNEW.ccAddresses = ccMailList;
         }
         sendMails.add(messageNEW);
         Messaging.SendEmailResult[] results = messaging.sendEmail(sendMails);
         for (Integer i = 0; i < results.size(); i++) {
            if (results[i].success == false) {
               system.debug('=====send mail error:' + results[i].errors[0].message);
               result = false;
               Errorstr += 'sendMail error:' + results[i].errors[0].message + '\n';
               rs = false;
            }
      }
      //在单个事务中,只能调用send方法 10 次。
      Messaging.SendEmailResult[] results = messaging.sendEmail(sendMails);
      for (Integer i = 0; i < results.size(); i++) {
         if (results[i].success == false) {
            system.debug('=====send mail error:' + results[i].errors[0].message);
            result = false;
            Errorstr += 'sendMail error:' + results[i].errors[0].message + '\n';
            rs = false;
         }
      }
      return rs;