public with sharing class RepairAgainAnMBCHandler extends Oly_TriggerHandler{ private Map newMap; private Map oldMap; private List newList; private List oldList; public RepairAgainAnMBCHandler() { this.newMap = (Map) Trigger.newMap; this.oldMap = (Map) Trigger.oldMap; this.newList = (List) Trigger.new; this.oldList = (List) Trigger.old; } protected override void beforeInsert() { setName(); } protected override void afterInsert() { } protected override void beforeUpdate() { } protected override void afterUpdate(){ //更新成功后,需要向相关RC人员、OSH-SH/OSH-GZ品质人员发送邮件通知 sendEmail(); } //before insert private void setName() { //RepairAgainAn__c Set Set repairAnSet= new Set(); for(RepairAgainAn_M_BC__c ram : newList){ repairAnSet.add(ram.RepairAgainAn_request_name__c); } Map repairMbcMap= new Map([SELECT Id,SORC__c,(SELECT Id from RepairAgainAn_M_BC__r) from RepairAgainAn__c where Id in :repairAnSet]); for (RepairAgainAn_M_BC__c qisMbc : newList){ if(repairMbcMap.containsKey(qisMbc.RepairAgainAn_request_name__c)){ //QIS-MBC name设定规则 SORC的编号 - M-BC的选项 - 财年 - 顺序编号 String tempName = null; tempName = repairMbcMap.get(qisMbc.RepairAgainAn_request_name__c).SORC__c ; tempName += '-' + qisMbc.M_BC__c; tempName += '-' + countFiscalyear(); //顺序编号计算 Integer repairSize = repairMbcMap.get(qisMbc.RepairAgainAn_request_name__c).RepairAgainAn_M_BC__r.size(); if( repairSize == 0 ){ tempName += '-' + '001'; } else { Integer temp = repairMbcMap.get(qisMbc.RepairAgainAn_request_name__c).RepairAgainAn_M_BC__r.size()+1 ; String repairAgainSizeString = '000' + temp ; String cutString = repairAgainSizeString.substring(repairAgainSizeString.length()-3,repairAgainSizeString.length()); tempName += '-' + cutString; } qisMbc.Name = tempName; } } } //after update private void sendEmail(){ EmailTemplate et=[Select id from EmailTemplate where name = '再修理分析M_BC回答内容更新' limit 1]; List neadUpdateList = new List(); for(RepairAgainAn_M_BC__c ram : newList){ if(newMap.get(ram.Id).RepairAgainAn_M_BC_answer_detail__c != oldMap.get(ram.Id).RepairAgainAn_M_BC_answer_detail__c){ neadUpdateList.add(ram.Id); } } String[] toAddresses = System.Label.RepairAgainAn_Sendmail.split(';'); List emails = new List(); for(Id repairMbId: neadUpdateList){ Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail = Messaging.renderStoredEmailTemplate(et.Id, null , repairMbId); mail.setSaveAsActivity(false); mail.setToAddresses(toAddresses); emails.add(mail); } Messaging.sendEmail(emails); } //计算财年 private String countFiscalyear(){ //财年 Date dateNow = Date.today(); Integer year = dateNow.year(); Integer month = dateNow.month(); String flag = ''; if( month < 4 ){ year -= 1; } if( month < 4 || month > 9){ flag = '2H\''; }else{ flag = '1H\''; } Integer tempYear = year + 1; String currentPeriod = String.valueOf('FY' + tempYear + ' ' + flag); return currentPeriod; } }