123
chenjingwu
2024-04-11 d29f75b84fccd06917fb8e2c2ee70e9d76f868cd
force-app/main/default/triggers/ContentDocumentLink.trigger
@@ -1,7 +1,9 @@
trigger ContentDocumentLink on ContentDocumentLink (before insert,after insert,before delete) {
    // 20231103 陈京武 Lightning文件修改 Start
    if(StaticParameter.ContentDocumentLink == false){
        return;
    }
    if((!Test.isRunningTest())&&UserInfo.getUserId()==System.Label.ByPassTrigger){
        return;
    }
@@ -60,6 +62,8 @@
    List<String> rentaldeleteApplyFaultIds = new List<String>();
    Map<String,List<Id>> deleteImages = new Map<String,List<Id>>();
    // sx 20230210end 备品借出申请故障报告附件提取
    Set<Id> docidList = new Set<Id>();
    Set<Id> delDocidList = new Set<Id>();
    if (Trigger.isBefore && Trigger.isInsert) {
        for (ContentDocumentLink link : Trigger.new) {
            if(String.valueOf(link.LinkedEntityId).startsWith(System.Label.Oppor_sepKey)){
@@ -69,6 +73,29 @@
            if(String.valueOf(link.LinkedEntityId).startsWith('a3Z')){
                opportunityFileOrderIds.add(link.LinkedEntityId);
            }
            docidList.add(link.ContentDocumentId);
        }
    }
    if (Trigger.isAfter && Trigger.isInsert) {
        for (ContentDocumentLink link : Trigger.new) {
            docidList.add(link.ContentDocumentId);
        }
    }
    if(Trigger.isDelete && Trigger.isBefore){
        for (ContentDocumentLink link : Trigger.old) {
            docidList.add(link.ContentDocumentId);
            delDocidList.add(link.ContentDocumentId);
        }
    }
    ContentVersion ver = new ContentVersion();
    System.debug('docidList.size=>' + docidList.size());
    if(docidList.size() > 0){
        ver = [select FileType,TextPreview from ContentVersion where ContentDocumentId in: docidList limit 1];
        System.debug('TextPreview=>' + ver.TextPreview);
        System.debug('FileType=>' + ver.TextPreview);
        if(ver.FileType == 'SNOTE'){
            System.debug('可恶的备注!!!');
            return;
        }
    }
    if (Trigger.isBefore && Trigger.isDelete) {
@@ -218,10 +245,14 @@
    if (accIds.size() > 0) {
        Map<String, String> attMap = new Map<String, String>();
        // List<Attachment> attList = [select Id, ParentId from Attachment where ParentId = :accIds order by ParentId];
        List<ContentDocumentLink> linkList = [select LinkedEntityId from ContentDocumentLink where LinkedEntityId =: accIds order by LinkedEntityId];
        List<ContentDocumentLink> linkList = [select ContentDocumentId,LinkedEntityId from ContentDocumentLink where ContentDocument.FileType != 'SNOTE' and LinkedEntityId =: accIds order by LinkedEntityId];
        System.debug('客户Link的条数:' + linkList.size());
        for (ContentDocumentLink link : linkList) {
            attMap.put(link.LinkedEntityId, link.LinkedEntityId);
            if(!delDocidList.contains(link.ContentDocumentId)){
                attMap.put(link.LinkedEntityId, link.LinkedEntityId);
            }
        }
        System.debug('attMap的条数:' + attMap);
        List<Account> updAccList = new List<Account>();
        //20221207 lt 医院审批优化 start
@@ -257,6 +288,7 @@
                        }
                    }
                    acc.Is_upload_file__c = attMap.containsKey(accid);
                    System.debug('是否上传附件:' + attMap.containsKey(accid));
                    updAccList.add(acc);
                }
            }
@@ -278,9 +310,11 @@
    if (accAppIds.size() > 0) {
        Map<String, String> attMap = new Map<String, String>();
        // List<Attachment> attList = [select Id, ParentId from Attachment where ParentId = :accAppIds order by ParentId];
        List<ContentDocumentLink> linkList = [select LinkedEntityId from ContentDocumentLink where LinkedEntityId =: accAppIds order by LinkedEntityId];
        List<ContentDocumentLink> linkList = [select ContentDocumentId,LinkedEntityId from ContentDocumentLink where  ContentDocument.FileType != 'SNOTE' and  LinkedEntityId =: accAppIds order by LinkedEntityId];
        for (ContentDocumentLink link : linkList) {
            attMap.put(link.LinkedEntityId, link.LinkedEntityId);
            if(!delDocidList.contains(link.ContentDocumentId)){
                attMap.put(link.LinkedEntityId, link.LinkedEntityId);
            }
        }
        List<Account_Delay_Apply__c> updAccAppList = new List<Account_Delay_Apply__c>();
        
@@ -308,7 +342,10 @@
        }
        try {
            System.debug('客户变更申请');
            if (updAccAppList.size() > 0) update updAccAppList;
            if (updAccAppList.size() > 0){
                StaticParameter.ContentDocumentTrigger = false;
                update updAccAppList;
            }
        } catch (Exception e) {
            linkList[0].addError(e.getMessage());
        }
@@ -321,7 +358,7 @@
        
        Map<String, String> attMap = new Map<String, String>();
        // List<Attachment> attList = [select Id, ParentId from Attachment where ParentId = :specIds order by ParentId];
        List<ContentDocumentLink> linkList = [select LinkedEntityId from ContentDocumentLink where LinkedEntityId =: specIds order by LinkedEntityId];
        List<ContentDocumentLink> linkList = [select LinkedEntityId from ContentDocumentLink where  ContentDocument.FileType != 'SNOTE' and  LinkedEntityId =: specIds order by LinkedEntityId];
        for (ContentDocumentLink link : linkList) {
            attMap.put(link.LinkedEntityId, link.LinkedEntityId);
        }
@@ -401,8 +438,11 @@
                System.debug(Trigger.isBefore+'陈京武');
                return;
            }else{
                System.debug(Trigger.isBefore+'武');
                DeleteReIds.add(link.LinkedEntityId);
                if(link.LinkedEntityId.getSObjectType().getDescribe().getName() != 'User'){
                    DeleteReIds.add(link.LinkedEntityId);
                }
                // System.debug(Trigger.isBefore+'武');
                // DeleteReIds.add(link.LinkedEntityId);
            }
        }
    }
@@ -572,6 +612,6 @@
    // DB202304087063 SFDC系统附件上传自动通知功能开发需求 end
// 20231103 陈京武 Lightning文件修改 End
    
}