19626
2023-07-25 e4e82928f141bd7b580e33289412dfd9bea821f8
force-app/main/default/classes/AttachmentReQisHandler.cls
@@ -5,18 +5,18 @@
 */
public without sharing class AttachmentReQisHandler extends Oly_TriggerHandler{
    @TestVisible
    private Map<Id, Attachment> newMap;
    private Map<Id, ContentDocumentLink> newMap;
    @TestVisible
    private Map<Id, Attachment> oldMap;
    private Map<Id, ContentDocumentLink> oldMap;
    @TestVisible
    private List<Attachment> newList;
    private List<ContentDocumentLink> newList;
    @TestVisible
    private List<Attachment> oldList;
    private List<ContentDocumentLink> oldList;
    public AttachmentReQisHandler() {
        this.newMap = (Map<Id, Attachment>) Trigger.newMap;
        this.oldMap = (Map<Id, Attachment>) Trigger.oldMap;
        this.newList = (List<Attachment>) Trigger.new;
        this.oldList = (List<Attachment>) Trigger.old;
        this.newMap = (Map<Id, ContentDocumentLink>) Trigger.newMap;
        this.oldMap = (Map<Id, ContentDocumentLink>) Trigger.oldMap;
        this.newList = (List<ContentDocumentLink>) Trigger.new;
        this.oldList = (List<ContentDocumentLink>) Trigger.old;
    }
    @TestVisible
    protected override void afterInsert() {
@@ -24,19 +24,32 @@
        NoteMail();
    }
    private void NoteMail() {
        List<Id> linkIdList = new List<Id>();
        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<Messaging.SingleEmailMessage> sendMails = new List<Messaging.SingleEmailMessage>();
        List<String> Rlist = new List<String>();
        List<String> ParentIdList = new List<String>();
        // 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);
        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);
            }
        }
        List<Attachment> NtList = [Select id,ParentId,Name,Body FROM Attachment where Id in : Rlist];
        // 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<Attachment> NtList = [Select id,ParentId,Name,Body FROM Attachment where Id in : Rlist];
        List<ContentVersion> verList = [select Id,Title,VersionData,ContentDocumentId from ContentVersion where ContentDocumentId in: Rlist];
        Map<Id,Repair__c> updateRprMap = new Map<Id,Repair__c>();
        Map<Id,QIS_Report__c> updateQisMap = new Map<Id,QIS_Report__c>();
        for (Repair__c re :[select id,Name,SerialNumber__c,Delivered_Product__r.Name,HP_Name__c
@@ -61,11 +74,12 @@
            }
        }
        List<User> 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;
        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 = '';
            title = '【修理/QIS】:' + titName + '已新增附件,请查看';
@@ -75,12 +89,12 @@
            body += '<br/>';
            body += '机身号/批号 :' + Serial;
            body += '<br/>';
            body += '附件名称/备注名称:' + nt.Name;
            body += '附件名称/备注名称:' + version.Title;
            body += '<br/>';
            body += '操作担当:' + UserInfo.getName();
            body += '<br/>';
            body += '<br/>';
            body += '链接:' + baseUrl + '/' + nt.ParentId +' ';
            body += '链接:' + baseUrl + '/' + link.LinkedEntityId +' ';
            //收件邮箱
            List<String> toMailList = new List<String>();
            String uId = UserInfo.getUserId();
@@ -91,8 +105,9 @@
            }
            //抄送的邮箱
            List<String> ccMailList = new List<String>();
            ccMailList.add('gaozhangwei@prec-tech.com');
            ccMailList.add('wei_liang@olympus.com.cn');
            // ccMailList.add('gaozhangwei@prec-tech.com');
            // ccMailList.add('wei_liang@olympus.com.cn');
            ccMailList.add('chenjingwu@prec-tech.com');
            Messaging.SingleEmailMessage messageNEW = new Messaging.SingleEmailMessage();
            messageNEW.subject = title;
            messageNEW.htmlBody = body;
@@ -103,6 +118,48 @@
            }
            sendMails.add(messageNEW);
        }
        // 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 += '<br/>';
        //     body += '产品名称/型号 :' + prname;
        //     body += '<br/>';
        //     body += '机身号/批号 :' + Serial;
        //     body += '<br/>';
        //     body += '附件名称/备注名称:' + nt.Name;
        //     body += '<br/>';
        //     body += '操作担当:' + UserInfo.getName();
        //     body += '<br/>';
        //     body += '<br/>';
        //     body += '链接:' + baseUrl + '/' + nt.ParentId +' ';
        //     //收件邮箱
        //     List<String> toMailList = new List<String>();
        //     String uId = UserInfo.getUserId();
        //     for (User u : userList) {
        //         if (u.Id != uId) {
        //             toMailList.add(u.Email);
        //         }
        //     }
        //     //抄送的邮箱
        //     List<String> ccMailList = new List<String>();
        //     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);
    }