// 1.现在系统里的规则是:希望到货日前三天的草案中的OPD会发送邮件提醒。To出借担当 Cc备品助理;操作者 // 2.未提交审批的申请单邮件提醒,具体逻辑为希望到货日-7自然日,通过Batch来检索出这些申请单,然后给相应的担当和助理发邮件提醒 // 3.该逻辑加上之后OPD相关的申请单会收到两次提醒,其他备品借出申请单按原有逻辑提醒。 global class RentalApplyAutoDailyBatch implements Database.Batchable,Database.Stateful { private Boolean checkTest = false; global RentalApplyAutoDailyBatch() { } global RentalApplyAutoDailyBatch(Boolean checkTest) { this.checkTest = true; } global Database.QueryLocator start(Database.BatchableContext bc) { // String query = 'SELECT Id, Status__c, Request_shipping_day__c, Person_In_Charge__r.Email, Rental_Assistant__r.Email from Rental_Apply__c WHERE Demo_purpose1__c = \'产品试用\' AND Status__c = \'草案中\' AND Request_shipping_day__c = NEXT_N_DAYS:7'; String query = 'SELECT Id, Status__c, Request_shipping_day__c, Person_In_Charge__r.Email, Rental_Assistant__r.Email, Demo_purpose1__c,RecordType.DeveloperName from Rental_Apply__c WHERE Status__c != \'完了\' AND Status__c != \'取消\' AND Status__c != \'删除\' AND Demo_purpose1__c = \'产品试用\' AND Request_shipping_day__c = NEXT_N_DAYS:7'; return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BC, list scope) { System.debug('scope====' + scope); List raList = new List(); raList = scope; //今天日期 Date today = Date.today(); EmailTemplate et=[Select id from EmailTemplate where name =:'提醒草案中需要提交的申请' limit 1]; List emails = new List(); List raIdList = new List(); for(Rental_Apply__c ra : raList){ //|| ra.Status__c == '申请中' || ra.Status__c == '申请中(OPD未通过)' if (ra.Status__c == '草案中'){ //未提交审批的申请单邮件提醒,具体逻辑为希望到货日-7自然日,通过Batch来检索出这些申请单,然后给相应的担当和助理发邮件提醒 System.debug(ra.Request_shipping_day__c + '====' + Date.today().addDays(7)); System.debug('zyhtest==========='+(ra.Request_shipping_day__c <= Date.today().addDays(7))); if(ra.Request_shipping_day__c == Date.today().addDays(7)){ List ccEmails = new List(); //发送邮件 Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail = Messaging.renderStoredEmailTemplate(et.Id, null , ra.Id); mail.setSaveAsActivity(false); System.debug(ra.Person_In_Charge__r.Email + '====' + ra.Rental_Assistant__r.Email); //To 备品出借担当 Cc 备品助理 if(ra.Person_In_Charge__r.Email != null){ mail.setToAddresses(new List{ra.Person_In_Charge__r.Email,'sunxia@prec-tech.com'}); } if(ra.Rental_Assistant__r.Email != null){ mail.setCcAddresses(new List{ra.Rental_Assistant__r.Email}); } emails.add(mail); } } else { // 希望到货日是七天内的 && 记录类型是备品申请的,自动分单 //UAT注释 // if(ra.Request_shipping_day__c <= Date.today().addDays(7) && ra.RecordType.DeveloperName == 'StandardRequest'){ // raIdList.add(ra.Id); // } } } if(emails.size()>0){ Messaging.sendEmail(emails); } if(raIdList.size() > 0){ //UAT注释 s //AuthRentalApplySplitController arasc = new AuthRentalApplySplitController(raIdList); //UAT注释 e // arasc.init(raIdList); } } global void finish(Database.BatchableContext BC) { //UAT注释 System.debug('2023-12-09zyhfinish' + DateTime.now()); if (checkTest == false && !Test.isRunningTest()) { // 2024-1-3 zyh 测试判断 Database.executeBatch( new AuthRentalApplyRepairBatch(),1); } // Database.executeBatch( new AuthRentalApplyRepairBatch(),1); } }