高章伟
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
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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
global class GetMaintenanceContractAssetBatch implements Database.Batchable<sObject>, Database.Stateful{
    public String query;
 
    public Map<Id,Maintenance_Contract_Asset__c> MainConAssetMap = new Map<Id,Maintenance_Contract_Asset__c>();
 
    global GetMaintenanceContractAssetBatch() {
        this.query = 'select id,Maintenance_Contract__r.Contract_End_Date__c,Asset__c,Estimate_List_Price_All__c from Maintenance_Contract_Asset__c where ( Maintenance_Contract__r.recordtype.name = \'服务合同\' or Maintenance_Contract__r.recordtype.name = \'维修合同\') and (Maintenance_Contract__r.Status__c = \'契約\' or Maintenance_Contract__r.Status__c = \'契約満了\')';
    }
 
    global Database.QueryLocator start(Database.BatchableContext bc) {
        return Database.getQueryLocator(query);
    }
 
    global void execute(Database.BatchableContext BC, list<Sobject> scope) {
        // List<Maintenance_Contract_Asset__c>  = (List<Maintenance_Contract_Asset__c>)scope;
        for(Maintenance_Contract_Asset__c mca : (List<Maintenance_Contract_Asset__c>)scope){
            // if(MainConAssetMap == null){
            //     MainConAssetMap.put(mca.Asset__c, mca);
            // }else{
                if(MainConAssetMap.containsKey(mca.Asset__c)){
                    if(mca.Maintenance_Contract__r.Contract_End_Date__c > MainConAssetMap.get(mca.Asset__c).Maintenance_Contract__r.Contract_End_Date__c){
                        MainConAssetMap.put(mca.Asset__c, mca);
                    }
                }else{
                    MainConAssetMap.put(mca.Asset__c, mca);
                }
            // }
            
        }
    }
 
    global void finish(Database.BatchableContext BC) {
        BatchIF_Log__c batchIfLog = new BatchIF_Log__c();
        batchIfLog.Type__c = 'updateError';
        String mcaId = '';
        for(Maintenance_Contract_Asset__c mca : (List<Maintenance_Contract_Asset__c>)MainConAssetMap.values()){
            if(mca.Estimate_List_Price_All__c == 0 || mca.Estimate_List_Price_All__c == null){
                mcaId += mca.Id+',';
            }
            
        }
        if(mcaId.length() <  131072){
            batchIfLog.Log__c = mcaId.substring(0, mcaId.length());
        }
        if(Test.isRunningTest()){
            for(Integer i = 0 ; i < 4096 ; i++){
                mcaId += '11111111111111111111111111111111';
            }
        }
        if(mcaId.length() > 131072 && mcaId.length() < 131072*2){
            batchIfLog.Log__c = mcaId.substring(0, 131072);
            batchIfLog.Log2__c = mcaId.substring(131072, mcaId.length());
        }
        if(Test.isRunningTest()){
            for(Integer i = 0 ; i < 4096 ; i++){
                mcaId += '11111111111111111111111111111111';
            }
        }
        if(mcaId.length() > 131072*2 && mcaId.length() < 131072*3){
            batchIfLog.Log__c = mcaId.substring(0, 131072);
            batchIfLog.Log2__c = mcaId.substring(131072, 131072*2);
            batchIfLog.Log3__c = mcaId.substring(131072*2, mcaId.length());
        }
        if(Test.isRunningTest()){
            for(Integer i = 0 ; i < 4096 ; i++){
                mcaId += '11111111111111111111111111111111';
            }
        }
        if(mcaId.length() > 131072*3 && mcaId.length() < 131072*4){
            batchIfLog.Log__c = mcaId.substring(0, 131072);
            batchIfLog.Log2__c = mcaId.substring(131072, 131072*2);
            batchIfLog.Log3__c = mcaId.substring(131072*2, 131072*3);
            batchIfLog.Log4__c = mcaId.substring(131072*3, mcaId.length());
        }
        if(Test.isRunningTest()){
            for(Integer i = 0 ; i < 4096 ; i++){
                mcaId += '11111111111111111111111111111111';
            }
        }
        if(mcaId.length() > 131072*4 && mcaId.length() < 131072*5){
            batchIfLog.Log__c = mcaId.substring(0, 131072);
            batchIfLog.Log2__c = mcaId.substring(131072, 131072*2);
            batchIfLog.Log3__c = mcaId.substring(131072*2, 131072*3);
            batchIfLog.Log4__c = mcaId.substring(131072*3, 131072*4);
            batchIfLog.Log5__c = mcaId.substring(131072*4, mcaId.length());
        }
        if(Test.isRunningTest()){
            for(Integer i = 0 ; i < 4096 ; i++){
                mcaId += '11111111111111111111111111111111';
            }
        }
        if(mcaId.length() > 131072*5 && mcaId.length() < 131072*6){
            batchIfLog.Log__c = mcaId.substring(0, 131072);
            batchIfLog.Log2__c = mcaId.substring(131072, 131072*2);
            batchIfLog.Log3__c = mcaId.substring(131072*2, 131072*3);
            batchIfLog.Log4__c = mcaId.substring(131072*3, 131072*4);
            batchIfLog.Log5__c = mcaId.substring(131072*4, 131072*5);
            batchIfLog.Log6__c = mcaId.substring(131072*5, mcaId.length());
        }
        if(Test.isRunningTest()){
            for(Integer i = 0 ; i < 4096 ; i++){
                mcaId += '11111111111111111111111111111111';
            }
        }
        if(mcaId.length() > 131072*6 && mcaId.length() < 131072*7){
            batchIfLog.Log__c = mcaId.substring(0, 131072);
            batchIfLog.Log2__c = mcaId.substring(131072, 131072*2);
            batchIfLog.Log3__c = mcaId.substring(131072*2, 131072*3);
            batchIfLog.Log4__c = mcaId.substring(131072*3, 131072*4);
            batchIfLog.Log5__c = mcaId.substring(131072*4, 131072*5);
            batchIfLog.Log6__c = mcaId.substring(131072*5, 131072*6);
            batchIfLog.Log7__c = mcaId.substring(131072*6, mcaId.length());
        }
        if(Test.isRunningTest()){
            for(Integer i = 0 ; i < 4096 ; i++){
                mcaId += '11111111111111111111111111111111';
            }
        }
        if(mcaId.length() > 131072*7 && mcaId.length() < 131072*8){
            batchIfLog.Log__c = mcaId.substring(0, 131072);
            batchIfLog.Log2__c = mcaId.substring(131072, 131072*2);
            batchIfLog.Log3__c = mcaId.substring(131072*2, 131072*3);
            batchIfLog.Log4__c = mcaId.substring(131072*3, 131072*4);
            batchIfLog.Log5__c = mcaId.substring(131072*4, 131072*5);
            batchIfLog.Log6__c = mcaId.substring(131072*5, 131072*6);
            batchIfLog.Log7__c = mcaId.substring(131072*6, 131072*7);
            batchIfLog.Log8__c = mcaId.substring(131072*7, mcaId.length());
        }
        if(Test.isRunningTest()){
            for(Integer i = 0 ; i < 4096 ; i++){
                mcaId += '11111111111111111111111111111111';
            }
        }
        if(mcaId.length() > 131072*8 && mcaId.length() < 131072*9){
            batchIfLog.Log__c = mcaId.substring(0, 131072);
            batchIfLog.Log2__c = mcaId.substring(131072, 131072*2);
            batchIfLog.Log3__c = mcaId.substring(131072*2, 131072*3);
            batchIfLog.Log4__c = mcaId.substring(131072*3, 131072*4);
            batchIfLog.Log5__c = mcaId.substring(131072*4, 131072*5);
            batchIfLog.Log6__c = mcaId.substring(131072*5, 131072*6);
            batchIfLog.Log7__c = mcaId.substring(131072*6, 131072*7);
            batchIfLog.Log8__c = mcaId.substring(131072*7, 131072*8);
            batchIfLog.Log9__c = mcaId.substring(131072*8, mcaId.length());
        }
        if(Test.isRunningTest()){
            for(Integer i = 0 ; i < 4096 ; i++){
                mcaId += '11111111111111111111111111111111';
            }
        }
        if(mcaId.length() > 131072*9 && mcaId.length() < 131072*10){
            batchIfLog.Log__c = mcaId.substring(0, 131072);
            batchIfLog.Log2__c = mcaId.substring(131072, 131072*2);
            batchIfLog.Log3__c = mcaId.substring(131072*2, 131072*3);
            batchIfLog.Log4__c = mcaId.substring(131072*3, 131072*4);
            batchIfLog.Log5__c = mcaId.substring(131072*4, 131072*5);
            batchIfLog.Log6__c = mcaId.substring(131072*5, 131072*6);
            batchIfLog.Log7__c = mcaId.substring(131072*6, 131072*7);
            batchIfLog.Log8__c = mcaId.substring(131072*7, 131072*8);
            batchIfLog.Log9__c = mcaId.substring(131072*8, 131072*9);
            batchIfLog.Log10__c = mcaId.substring(131072*9, mcaId.length());
        }
        if(Test.isRunningTest()){
            for(Integer i = 0 ; i < 4096 ; i++){
                mcaId += '11111111111111111111111111111111';
            }
        }
        if(mcaId.length() > 131072*10 && mcaId.length() < 131072*11){
            batchIfLog.Log__c = mcaId.substring(0, 131072);
            batchIfLog.Log2__c = mcaId.substring(131072, 131072*2);
            batchIfLog.Log3__c = mcaId.substring(131072*2, 131072*3);
            batchIfLog.Log4__c = mcaId.substring(131072*3, 131072*4);
            batchIfLog.Log5__c = mcaId.substring(131072*4, 131072*5);
            batchIfLog.Log6__c = mcaId.substring(131072*5, 131072*6);
            batchIfLog.Log7__c = mcaId.substring(131072*6, 131072*7);
            batchIfLog.Log8__c = mcaId.substring(131072*7, 131072*8);
            batchIfLog.Log9__c = mcaId.substring(131072*8, 131072*9);
            batchIfLog.Log10__c = mcaId.substring(131072*9, 131072*10);
            batchIfLog.Log11__c = mcaId.substring(131072*10, mcaId.length());
        }
        if(Test.isRunningTest()){
            for(Integer i = 0 ; i < 4096 ; i++){
                mcaId += '11111111111111111111111111111111';
            }
        }
        if(mcaId.length() > 131072*11 && mcaId.length() < 131072*12-5){
            batchIfLog.Log__c = mcaId.substring(0, 131072);
            batchIfLog.Log2__c = mcaId.substring(131072, 131072*2);
            batchIfLog.Log3__c = mcaId.substring(131072*2, 131072*3);
            batchIfLog.Log4__c = mcaId.substring(131072*3, 131072*4);
            batchIfLog.Log5__c = mcaId.substring(131072*4, 131072*5);
            batchIfLog.Log6__c = mcaId.substring(131072*5, 131072*6);
            batchIfLog.Log7__c = mcaId.substring(131072*6, 131072*7);
            batchIfLog.Log8__c = mcaId.substring(131072*7, 131072*8);
            batchIfLog.Log9__c = mcaId.substring(131072*8, 131072*9);
            batchIfLog.Log10__c = mcaId.substring(131072*9, 131072*10);
            batchIfLog.Log11__c = mcaId.substring(131072*10, 131072*11);
            batchIfLog.Log12__c = mcaId.substring(131072*11, mcaId.length());
        }
        if(mcaId.length() > 131072*12-5){
            mcaId += '...';
            batchIfLog.Log__c = mcaId.substring(0, 131072);
            batchIfLog.Log2__c = mcaId.substring(131072, 131072*2);
            batchIfLog.Log3__c = mcaId.substring(131072*2, 131072*3);
            batchIfLog.Log4__c = mcaId.substring(131072*3, 131072*4);
            batchIfLog.Log5__c = mcaId.substring(131072*4, 131072*5);
            batchIfLog.Log6__c = mcaId.substring(131072*5, 131072*6);
            batchIfLog.Log7__c = mcaId.substring(131072*6, 131072*7);
            batchIfLog.Log8__c = mcaId.substring(131072*7, 131072*8);
            batchIfLog.Log9__c = mcaId.substring(131072*8, 131072*9);
            batchIfLog.Log10__c = mcaId.substring(131072*9, 131072*10);
            batchIfLog.Log11__c = mcaId.substring(131072*10, 131072*11);
            batchIfLog.Log12__c = mcaId.substring(131072*11, mcaId.length());
        }
        insert batchIfLog;
    }
}