/** * 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(); //DB202308180733 P-新投诉系统GCHS项目--SQL中加入新字段-刘川-Latest_upload_time_attachments__c for (Repair__c re :[select id,Name,SerialNumber__c,Delivered_Product__r.Name,HP_Name__c,Latest_upload_time_attachments__c from Repair__c where id in : ParentIdList]) { //DB202308180733 P-新投诉系统GCHS项目-刘川-新字段赋值 re.Latest_upload_time_attachments__c = DateTime.now(); updateRprMap.put(re.id, re); } // DB202308180733 P-新投诉系统GCHS项目-刘川-更新字段 if (updateRprMap != null && updateRprMap.size() > 0) { update updateRprMap.values(); } for (QIS_Report__c qi :[select id,Name,lot_or_serial__c,nonyushohin__r.Name,Hospital__r.Name,Latest_upload_time_attachments__c from QIS_Report__c where id in : ParentIdList] ) { qi.Latest_upload_time_attachments__c = DateTime.now(); updateQisMap.put(qi.id, qi); } //DB202308180733 P-新投诉系统GCHS项目-刘川-更新字段 if (updateQisMap != null && updateQisMap.size() > 0) { update updateQisMap.values(); } // 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); } }