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
|
}
|