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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
public without sharing class NotetoPdfHandler extends Oly_TriggerHandler {
    // 20231103 陈京武 Lightning文件修改 Start
    @TestVisible
    private Map<Id, ContentDocumentLink> newMap;
    @TestVisible
    private Map<Id, ContentDocumentLink> oldMap;
    @TestVisible
    private List<ContentDocumentLink> newList;
    @TestVisible
    private List<ContentDocumentLink> oldList;
 
    public NotetoPdfHandler() {
        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() {
        Set<Id> ids = new Set<Id>();
        for (ContentDocumentLink link : newList) {
            ids.add(link.ContentDocumentId);
        }
        List<ContentVersion> 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<String> Rlist = new List<String>();
        // 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<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>();
        Map<String,String> idMap = new Map<String,String>();
        // 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<Attachment> NtList = [Select id,ParentId,Name,Body FROM Attachment where Id in : Rlist];
        List<ContentVersion> verList = [select Id,TextPreview,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] ) {
            // 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<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) {
            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 += '<br/>';
            body += '产品名称/型号 :' + prname;
            body += '<br/>';
            body += '机身号/批号 :' + Serial;
            body += '<br/>';
            body += '附件名称/备注名称:' + version.Title;
            body += '<br/>';
            body += '操作担当:' + UserInfo.getName();
            body += '<br/>';
            body += '<br/>';
            body += '链接:' + baseUrl + '/' + 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');
            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
}