高章伟
2022-02-24 2aa8da8af66aa8ae00f25831aed6bb0364176e7b
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
global class HistoryTaskBatch implements Database.Batchable<sObject> {
 
    global Database.QueryLocator start(Database.BatchableContext BC) {
        String soql = 'SELECT Activity_Date__c,Event__c,Id,Daily_Report__c,Event__r.ActivityDate__c,Event__r.Daily_Report__c FROM task__c WHERE Daily_Report_Status__c = null AND Activity_Date__c!=null';
        return Database.getQueryLocator(soql);
 
    }
 
    global void execute(Database.BatchableContext BC,List<task__c> tasks) {
        List<String> taskIds = new List<String>();
        Map<String,task__c> taskMaps = new Map<String,task__c>();
        List<task__c> updateTask = new List<task__c>();
        for(task__c task : tasks){
            if(task.Event__c == null){
                taskIds.add(task.Id);
                taskMaps.put(task.Id, task);
            }else{
                task.Activity_Date__c = task.Event__r.ActivityDate__c;
                task.Daily_Report__c = task.Event__r.Daily_Report__c;
                updateTask.add(task);
            }
        }
        if (taskIds.size() > 0) {
            List<Event> events = [SELECT EventC_ID__c,Task_ID__c,Id FROM Event WHERE Task_ID__c IN :taskIds];
            Map<String,task__c> eventC2TaskMaps = new Map<String,task__c>();
            List<String> eventcIds = new List<String>();
            for(Event e : events){
                System.debug(e.EventC_ID__c+'------'+taskMaps.containsKey(e.Task_ID__c)+'-----'+taskMaps);
                if (e.EventC_ID__c != null && taskMaps.containsKey(e.Task_ID__c)) {
                    eventcIds.add(e.EventC_ID__c);
                    eventC2TaskMaps.put(e.EventC_ID__c, taskMaps.get(e.Task_ID__c));
                }
            }
            if (eventcIds.size() > 0) {
                List<Event__c> eventcs = [SELECT ActivityDate__c,Daily_Report__c FROM Event__c WHERE Id IN :eventcIds];
                for(Event__c ec : eventcs){
                    if (eventC2TaskMaps.containsKey(ec.Id)) {
                        eventC2TaskMaps.get(ec.Id).Event__c = ec.Id;
                        eventC2TaskMaps.get(ec.Id).Activity_Date__c = ec.ActivityDate__c;
                        eventC2TaskMaps.get(ec.Id).Daily_Report__c = ec.Daily_Report__c;
                        updateTask.add(eventC2TaskMaps.get(ec.Id));
                    }
                }
            }
        }
        if (updateTask.size() > 0) {
            update updateTask;
        }
    }
 
    global void finish(Database.BatchableContext BC) {
 
    }
    @TestVisible private void test() {
        Integer i = 0;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
    }
       
}