public without sharing class NotetoPdfHandler extends Oly_TriggerHandler { @TestVisible private Map newMap; @TestVisible private Map oldMap; @TestVisible private List newList; @TestVisible private List oldList; public NotetoPdfHandler() { 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() { Set ids = new Set(); for (ContentDocumentLink link : newList) { ids.add(link.ContentDocumentId); } List version = [select Id from ContentVersion where ContentDocumentId in: ids and FileType = 'SNOTE']; if(version != null){ NotetoPdf(); } // 修理ID NoteMail(); } // 修理和QIS新建备注时,生成对应的PDF private void NotetoPdf() { List Rlist = new List(); // QisID for (ContentDocumentLink link : newList) { if(String.valueOf(link.LinkedEntityId).startsWith('a0J') || String.valueOf(link.LinkedEntityId).startsWith('a0f')){ Rlist.add(link.Id); } } if (Rlist.size() > 0) { ReAndQISNotePDFController.generateAttachment(Rlist); } } private void NoteMail() { List linkIdList = new List(); for (ContentDocumentLink link : newList) { linkIdList.add(link.Id); } newList = [select Id,LinkedEntityId,ContentDocumentId from ContentDocumentLink where Id in: linkIdList]; String baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); List sendMails = new List(); List Rlist = new List(); List ParentIdList = new List(); // QisID for (ContentDocumentLink link : newList) { if(String.valueOf(link.LinkedEntityId).startsWith('a0J') || String.valueOf(link.LinkedEntityId).startsWith('a0f')){ Rlist.add(link.ContentDocumentId); ParentIdList.add(link.LinkedEntityId); } } // 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]; List verList = [select Id,TextPreview,Title,VersionData,ContentDocumentId from ContentVersion where ContentDocumentId 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 (ContentVersion version : verList) { ContentDocumentLink link = [select LinkedEntityId from ContentDocumentLink where ContentDocumentId =: version.ContentDocumentId limit 1]; String titName = updateRprMap.containsKey(link.LinkedEntityId)? updateRprMap.get(link.LinkedEntityId).Name : updateQisMap.get(link.LinkedEntityId).Name; String prname = updateRprMap.containsKey(link.LinkedEntityId)? updateRprMap.get(link.LinkedEntityId).Delivered_Product__r.Name : updateQisMap.get(link.LinkedEntityId).nonyushohin__r.Name; String Serial = updateRprMap.containsKey(link.LinkedEntityId)? updateRprMap.get(link.LinkedEntityId).SerialNumber__c : updateQisMap.get(link.LinkedEntityId).lot_or_serial__c; String accountname = updateRprMap.containsKey(link.LinkedEntityId)? updateRprMap.get(link.LinkedEntityId).HP_Name__c : updateQisMap.get(link.LinkedEntityId).Hospital__r.Name; String title = ''; String body = ''; if(version.TextPreview != null){ title = '【修理/QIS】:' + titName + '已新增备注,请查看'; }else{ title = '【修理/QIS】:' + titName + '已新增文件,请查看'; } body += '用户名:' + accountname; body += '
'; body += '产品名称/型号 :' + prname; body += '
'; body += '机身号/批号 :' + Serial; body += '
'; body += '附件名称/备注名称:' + version.Title; body += '
'; body += '操作担当:' + UserInfo.getName(); body += '
'; body += '
'; body += '链接:' + baseUrl + '/' + link.LinkedEntityId +' '; //收件邮箱 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); } Messaging.SendEmailResult[] results = messaging.sendEmail(sendMails); } }