public without sharing class NotetoPdfHandler extends Oly_TriggerHandler { // 20231103 陈京武 Lightning文件修改 Start @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.size() > 0){ NotetoPdf(); } // 修理ID NoteMail(); } // 修理和QIS新建备注时,生成对应的PDF private void NotetoPdf() { List Rlist = new List(); // QisID // chenjingwu 20240207 start // for (ContentDocumentLink link : newList) { // if(String.valueOf(link.LinkedEntityId).startsWith('a0J') // || String.valueOf(link.LinkedEntityId).startsWith('a0f')){ // Rlist.add(link.Id); // } // } for (ContentDocumentLink link : newList) { String parentLabel = link.LinkedEntityId.getSObjectType().getDescribe().getName(); if(parentLabel.equals('Repair__c') || parentLabel.equals('QIS_Report__c')){ Rlist.add(link.Id); } } // chenjingwu 20240207 end 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(); Map idMap = new Map(); // QisID // chenjingwu 20240207 start // 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); // idMap.put(link.ContentDocumentId,link.LinkedEntityId); // } // } for (ContentDocumentLink link : newList) { String parentLabel = link.LinkedEntityId.getSObjectType().getDescribe().getName(); if(parentLabel.equals('Repair__c') || parentLabel.equals('QIS_Report__c')){ Rlist.add(link.ContentDocumentId); ParentIdList.add(link.LinkedEntityId); idMap.put(link.ContentDocumentId,link.LinkedEntityId); } } if (Rlist.size() == 0) { return; }//add by shalaoshi 20240208 // chenjingwu 20240207 end // 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] ) { // 20231103 陈京武 Lightning文件修改 Start re.Latest_upload_time_attachments__c = DateTime.now(); // 20231103 陈京武 Lightning文件修改 End updateRprMap.put(re.id, re); } // 20231113 陈京武 Lightning文件修改 Start if (updateRprMap != null && updateRprMap.size() > 0) { update updateRprMap.values(); } // 20231113 陈京武 Lightning文件修改 End 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] ) { // 20231103 陈京武 Lightning文件修改 Start qi.Latest_upload_time_attachments__c = DateTime.now(); // 20231103 陈京武 Lightning文件修改 End updateQisMap.put(qi.id, qi); } // 20231113 陈京武 Lightning文件修改 Start if (updateQisMap != null && updateQisMap.size() > 0) { update updateQisMap.values(); } // 20231113 陈京武 Lightning文件修改 End // 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) { String linkedEntityId = idMap.get(version.ContentDocumentId); String titName = updateRprMap.containsKey(linkedEntityId)? updateRprMap.get(linkedEntityId).Name : updateQisMap.get(linkedEntityId).Name; String prname = updateRprMap.containsKey(linkedEntityId)? updateRprMap.get(linkedEntityId).Delivered_Product__r.Name : updateQisMap.get(linkedEntityId).nonyushohin__r.Name; String Serial = updateRprMap.containsKey(linkedEntityId)? updateRprMap.get(linkedEntityId).SerialNumber__c : updateQisMap.get(linkedEntityId).lot_or_serial__c; String accountname = updateRprMap.containsKey(linkedEntityId)? updateRprMap.get(linkedEntityId).HP_Name__c : updateQisMap.get(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 + '/' + 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); } // 20231103 陈京武 Lightning文件修改 End }