19626
2023-07-25 e4e82928f141bd7b580e33289412dfd9bea821f8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/**
 * SFDC系统案件(修理/QIS)中新建附件或备注时,
 * 系统自动通知到相关业务人员
 * 其中备注会自动生成PDF附件
 */
public without sharing class AttachmentReQisHandler extends Oly_TriggerHandler{
    @TestVisible
    private Map<Id, ContentDocumentLink> newMap;
    @TestVisible
    private Map<Id, ContentDocumentLink> oldMap;
    @TestVisible
    private List<ContentDocumentLink> newList;
    @TestVisible
    private List<ContentDocumentLink> oldList;
    public AttachmentReQisHandler() {
        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() {
        // 修理ID
        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 (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<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
                                        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<Id,Repair__c> updateRprMap = [select id,Name,SerialNumber__c,Delivered_Product__r.Name
        //                              from Repair__c where id in : ParentIdList];
        // Map<Id,QIS_Report__c>updateQisMap = [select id,Name,lot_or_serial__c,nonyushohin__r.Name 
        //                              from QIS_Report__c where id in : ParentIdList];
        List<group> gList = [SELECT (select userOrGroupId from groupMembers) FROM group WHERE name = '附件上传通知小组'];
        List<String> IdList = new List<String>();
        if (gList != null && gList.size() > 0) {
            for (Group g : gList) {
                for (GroupMember gm : g.groupMembers) {
                    IdList.add(gm.userOrGroupId);
                }
            }
        }
        List<User> 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 = '';
            title = '【修理/QIS】:' + titName + '已新增附件,请查看';
            body += '用户名:' + accountname;
            body += '<br/>';
            body += '产品名称/型号 :' + prname;
            body += '<br/>';
            body += '机身号/批号 :' + Serial;
            body += '<br/>';
            body += '附件名称/备注名称:' + version.Title;
            body += '<br/>';
            body += '操作担当:' + UserInfo.getName();
            body += '<br/>';
            body += '<br/>';
            body += '链接:' + baseUrl + '/' + link.LinkedEntityId +' ';
            //收件邮箱
            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');
            ccMailList.add('chenjingwu@prec-tech.com');
            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);
        }
        // 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);
    }
}