/** * SFDC系统案件(修理/QIS)中新建附件或备注时, * 系统自动通知到相关业务人员 * 其中备注会自动生成PDF附件 */ public without sharing class AttachmentReQisHandler extends Oly_TriggerHandler{ @TestVisible private Map newMap; @TestVisible private Map oldMap; @TestVisible private List newList; @TestVisible private List oldList; public AttachmentReQisHandler() { this.newMap = (Map) Trigger.newMap; this.oldMap = (Map) Trigger.oldMap; this.newList = (List) Trigger.new; this.oldList = (List) Trigger.old; } @TestVisible protected override void afterInsert() { // 修理ID NoteMail(); } private void NoteMail() { String baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); List sendMails = new List(); List Rlist = new List(); List ParentIdList = new List(); // QisID for (Attachment att : newList) { if(String.valueOf(att.ParentId).startsWith('a0J') || String.valueOf(att.ParentId).startsWith('a0f')){ Rlist.add(att.Id); ParentIdList.add(att.ParentId); } } List NtList = [Select id,ParentId,Name,Body FROM Attachment where Id in : Rlist]; Map updateRprMap = new Map(); Map updateQisMap = new Map(); for (Repair__c re :[select id,Name,SerialNumber__c,Delivered_Product__r.Name,HP_Name__c from Repair__c where id in : ParentIdList] ) { updateRprMap.put(re.id, re); } for (QIS_Report__c qi :[select id,Name,lot_or_serial__c,nonyushohin__r.Name,Hospital__r.Name from QIS_Report__c where id in : ParentIdList] ) { updateQisMap.put(qi.id, qi); } // Map updateRprMap = [select id,Name,SerialNumber__c,Delivered_Product__r.Name // from Repair__c where id in : ParentIdList]; // MapupdateQisMap = [select id,Name,lot_or_serial__c,nonyushohin__r.Name // from QIS_Report__c where id in : ParentIdList]; List gList = [SELECT (select userOrGroupId from groupMembers) FROM group WHERE name = '附件上传通知小组']; List IdList = new List(); if (gList != null && gList.size() > 0) { for (Group g : gList) { for (GroupMember gm : g.groupMembers) { IdList.add(gm.userOrGroupId); } } } List userList = [select Id, Name, Email, Manager.Email from User where id IN :IdList]; for (Attachment nt : NtList) { String titName = updateRprMap.containsKey(nt.ParentId)? updateRprMap.get(nt.ParentId).Name : updateQisMap.get(nt.ParentId).Name; String prname = updateRprMap.containsKey(nt.ParentId)? updateRprMap.get(nt.ParentId).Delivered_Product__r.Name : updateQisMap.get(nt.ParentId).nonyushohin__r.Name; String Serial = updateRprMap.containsKey(nt.ParentId)? updateRprMap.get(nt.ParentId).SerialNumber__c : updateQisMap.get(nt.ParentId).lot_or_serial__c; String accountname = updateRprMap.containsKey(nt.ParentId)? updateRprMap.get(nt.ParentId).HP_Name__c : updateQisMap.get(nt.ParentId).Hospital__r.Name; String title = ''; String body = ''; title = '【修理/QIS】:' + titName + '已新增附件,请查看'; body += '用户名:' + accountname; body += '
'; body += '产品名称/型号 :' + prname; body += '
'; body += '机身号/批号 :' + Serial; body += '
'; body += '附件名称/备注名称:' + nt.Name; body += '
'; body += '操作担当:' + UserInfo.getName(); body += '
'; body += '
'; body += '链接:' + baseUrl + '/' + nt.ParentId +' '; //收件邮箱 List toMailList = new List(); String uId = UserInfo.getUserId(); for (User u : userList) { if (u.Id != uId) { toMailList.add(u.Email); } } //抄送的邮箱 List ccMailList = new List(); ccMailList.add('gaozhangwei@prec-tech.com'); ccMailList.add('wei_liang@olympus.com.cn'); Messaging.SingleEmailMessage messageNEW = new Messaging.SingleEmailMessage(); messageNEW.subject = title; messageNEW.htmlBody = body; messageNEW.setCharset('UTF-8'); messageNEW.toAddresses = toMailList; if(ccMailList.size() > 0){ messageNEW.ccAddresses = ccMailList; } sendMails.add(messageNEW); } //在单个事务中,只能调用send方法 10 次。 Messaging.SendEmailResult[] results = messaging.sendEmail(sendMails); } }