liuyn
2024-03-11 a87f1c3df03078814ee97ad0c8ac200a232419e9
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
global without sharing class Batch_Ali_FixAttachmentToFilesBP implements Database.Batchable<sObject>{
    // Id batchJobId = Database.executeBatch(new Batch_FixAttachmentToFilesBP('Consumable_order__c',Datetime.newInstance(2023, 1, 1, 8, 0, 0),Datetime.newInstance(2024, 1, 1, 8, 0, 0)),2000);
    private Datetime creStartDate = null;
    private Datetime creEndDate = null;
    private String objectApiName  = null;
    private String whereS  = null; // 20231110 ljh add
    private Set<String> parentIds = new Set<String>();//Add by Li Jun 20230703 
    public Batch_Ali_FixAttachmentToFilesBP(String objectType, Datetime startTime, Datetime endTime) {
        creStartDate = startTime;
        creEndDate = endTime;
        objectApiName = objectType;
    }
    // 20231110 ljh add start
    public Batch_Ali_FixAttachmentToFilesBP(String objectType,Datetime startTime, Datetime endTime,String myWhere) {
        objectApiName = objectType;
        creStartDate = startTime;
        creEndDate = endTime;
        whereS = myWhere;
    }
    // 20231110 ljh add end
    //Add by Li Jun 20230703 Start
    public Batch_Ali_FixAttachmentToFilesBP(Set<String> parentIds) {
        this.parentIds = parentIds;
    }
     //Add by Li Jun 20230703 End
    global Database.QueryLocator start(Database.BatchableContext BC) {
        String query = '';
        switch on objectApiName {
            when null, '' {
                query = '' ;
                System.debug('No availabe object api name in start phase>>>>>>');
            }
            when 'Asset' {
                query ='select id,Name,QrId__c FROM ';
            }
            when else {
                query ='select id,Name,QrId__c,BRId__c FROM ';
            }
        }
        query += objectApiName;
        // query +=' WHERE  CreatedDate >=:creStartDate AND CreatedDate <:creEndDate ';
        query +=' WHERE  Id =\'02iC8000000DAfRIAW\'';
        if(String.isNotBlank(whereS)){
            query += whereS;
        }
        query += ' Order by CreatedDate desc';
        System.debug('query>>>>>'+query);
        return Database.getQueryLocator(query);
    }
 
    global void execute(Database.BatchableContext BC, list<Sobject> scope) {
        if(scope.size() <= 0) {
            return;
        }
        switch on objectApiName {
            when 'Asset' {
                processAsset(scope);
            }
            when else {
                System.debug('No availabe object api name in execution phase>>>>>>');
            }
        }
        
    }
 
    global void processAsset(list<Sobject> scope) {
        Set<String> SetAssetQRId = new Set<String>();
        List<ContentVersion> updateContents = new List<ContentVersion>();
        for(Sobject targetObj : scope)  {
            Asset assetObj = (Asset)targetObj;
            SetAssetQRId.add(assetObj.QrId__c);
            ContentVersion cVersion = new ContentVersion();
            cVersion.Id = assetObj.QrId__c;
            cVersion.Title = 'QRCode-' + assetObj.Name;
            cVersion.PathOnClient = 'QRCode-' + assetObj.Name + '.jpg';
            System.debug('Asset new Title>>>>' + cVersion.Title);
            updateContents.add(cVersion);
        }
        if(updateContents.isEmpty()){
            return;
        }
        List<Database.SaveResult> saveResultsContents = Database.update(updateContents, false);
        insertLog(saveResultsContents,SetAssetQRId);
 
        //process ContentDocumentLink
        // set<Id> contentIds = new set<Id>();
        // for(ContentVersion cv : updateContents){
        //     contentIds.add(cv.id);
        // }
        // List<ContentVersion> conDocuments = [SELECT ContentDocumentId, Title,PathOnClient FROM ContentVersion WHERE Id in: contentIds];
        // List<ContentDocumentLink> updateDocLinks = new List<ContentDocumentLink>();  
        // for(ContentVersion cv : conDocuments){
        //     ContentDocumentLink cDocLink = new ContentDocumentLink();
        //     cDocLink.ContentDocumentId = cv.ContentDocumentId;          //Add ContentDocumentId
        //     cDocLink.LinkedEntityId = nameParentMaps.get(cv.PathOnClient);     //Add attachment parentId
        //     cDocLink.ShareType = 'V';                                   //V - Viewer permission. C - Collaborator permission. I - Inferred permission.
        //     cDocLink.Visibility = 'AllUsers';
        //     updateDocLinks.add(cDocLink);
        // }
        // List<Database.SaveResult> saveResultsLinks = Database.update(updateDocLinks, false);
        // insertLog(saveResultsLinks,SetAssetQRId);
    }
 
    global void insertLog(List<Database.SaveResult> saveResults,Set<String> attachmentIds) {
        Transaction_Log__c traLog = new Transaction_Log__c();
        List<Map<String,String>> logMapList = new List<Map<String,String>>();
        for (Database.SaveResult result : saveResults) {
            String recordId = result.getId();
            if (!result.isSuccess()) {
                for (Database.Error error : result.getErrors()) {
                    Map<String,String> logMap = new Map<String,String>();
                    String errorMsg = error.getMessage();
                    logMap.put('recordId',recordId);
                    logMap.put('errorMsg',errorMsg);
                    logMapList.add(logMap);
                }
            }
        }
        if(logMapList.size() > 0){
            Map<String,String> attachmentIdMap = new Map<String,String>();
            attachmentIdMap.put('attachmentIds',JSON.serialize(attachmentIds));
            logMapList.add(attachmentIdMap);
            traLog.Response__c = JSON.serialize(logMapList);
            traLog.Module__c = 'Attachment COnvert Transaction ';
            Insert traLog;
        }
    }
    global void finish(Database.BatchableContext BC) {
 
    }
}