高章伟
2022-02-18 8b5f4c6c281cfa548f92de52c8021e37aa81901e
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
global class NextMonthVisitBatch implements Database.Batchable<sObject>, Database.Stateful {
    
    //HWAG-BML3AC 询价任务创建 精琢技术 wql 2020/04/10 start
    //soql语句
    private String query;
    //用于单条传入id更新询价
    private String oppoId;
    //用于批量传入id更新询价
    private List<String> oppoList;
    //用于执行batch同时记录日志信息
    private BatchIF_Log__c iflog;
 
    Boolean IsNeedExecute = false; // 2021-03-09  mzy  WLIG-BYHD79  SFDC环境batch合并调查  是否符合执行条件
 
 
    global NextMonthVisitBatch() {    
        // this.query = query;
        iflog = new BatchIF_Log__c();
        iflog.Type__c = 'PushNotification';
        iflog.Is_Error__c = 0;
        iflog.Log__c = 'NextMonthVisitBatch start1\n';
        iflog.ErrorLog__c = '';
        insert iflog;
    }
    // 2021-03-09  mzy  WLIG-BYHD79  SFDC环境batch合并调查  start
    global NextMonthVisitBatch(Boolean NeedExecute) {
        this.IsNeedExecute = NeedExecute;
        iflog = new BatchIF_Log__c();
        iflog.Type__c = 'PushNotification';
        iflog.Is_Error__c = 0;
        iflog.Log__c = 'NextMonthVisitBatch start1\n';
        iflog.ErrorLog__c = '';
        insert iflog;
    }
    // 2021-03-09  mzy  WLIG-BYHD79  SFDC环境batch合并调查  end
    global NextMonthVisitBatch(String oppoId) {
        this.oppoId = oppoId;
        iflog = new BatchIF_Log__c();
        iflog.Type__c = 'PushNotification';
        iflog.Is_Error__c = 0;
        iflog.Log__c = 'NextMonthVisitBatch start2\n';
        iflog.ErrorLog__c = '';
        insert iflog;
    }
 
    global NextMonthVisitBatch(List<String> oppoList) {
        this.oppoList = oppoList;
        iflog = new BatchIF_Log__c();
        iflog.Type__c = 'PushNotification';
        iflog.Is_Error__c = 0;
        iflog.Log__c = 'NextMonthVisitBatch start3\n';
        iflog.ErrorLog__c = '';
        insert iflog;
    }
    // global NextMonthVisitBatch(boolean refresh) {    
    //     // this.query = query;
    //     iflog = new BatchIF_Log__c();
    //     iflog.Type__c = 'PushNotification';
    //     iflog.Is_Error__c = 0;
    //     iflog.Log__c = 'NextMonthVisitBatch start1\n';
    //     iflog.ErrorLog__c = '';
    //     insert iflog;
    //     thisMonthExecuteFlag = refresh;
    // }
 
    global Database.QueryLocator start(Database.BatchableContext bc) {
 
        // String query ='select id  from Opportunity where IsNextMonthOfVisit__c  =true';
        //String query ='select id  from Opportunity where IsNextMonthOfVisit__c  =true OR IsThisMonthOfVisit__c = true'; //20201214 zh CHAN-BW35VV
        String query ='select id  from Opportunity where (IsNextMonthOfVisit__c  =true OR IsThisMonthOfVisit__c = true)';  // 2021-03-10  mzy  WLIG-BYHD79 
 
        if (!string.isblank(oppoId)) {
            query += ' and id =  :oppoId';
        }
 
        if (oppoList != null) {
            query += ' and id in :oppoList ';
        }
 
        // 2021-03-09  mzy  WLIG-BYHD79  SFDC环境batch合并调查  start
        //  每月最后一天 运行  不满足运行时间,可以使查询到的结果为空
        //获取这个月的最后一天     
        Date toDate = Date.today();
        Date days = Date.newInstance(toDate.year(), toDate.month() + 1, 0);
        Integer monDays = days.day();
        Date dayEnd = Date.newInstance(toDate.year(), toDate.month(), monDays);
 
        if(toDate != dayEnd && IsNeedExecute == true){
            query = 'Select Id from Opportunity where Name = \'\' AND Name != \'\' ';
        }
        //2021-03-09  mzy  WLIG-BYHD79  SFDC环境batch合并调查 end
 
        return Database.getQueryLocator(query);
    }
 
    global void execute(Database.BatchableContext BC, list<Opportunity> scList) {
        try{
             List<Opportunity> opportunityList  = new List<Opportunity>();
 
            for(Opportunity o:scList){
                Opportunity oppo = new Opportunity();
                oppo.Id = o.Id;
                oppo.IsNextMonthOfVisit__c = false;
                oppo.IsThisMonthOfVisit__c = false;//20201214 zh CHAN-BW35VV 
                opportunityList.add(oppo);
            }
             if (opportunityList.size() > 0){
                Database.SaveResult[] lsr = Database.update(opportunityList, false);
                for (Integer tIdx = 0; tIdx < lsr.size(); tIdx++) {
                    Database.SaveResult sr = lsr[tIdx];
                    System.debug('sr.isSuccess:' + sr.isSuccess());
                    if (!sr.isSuccess()) {
                        Database.Error emsg = sr.getErrors()[0];
                        iflog.ErrorLog__c += 'ERROR ' + opportunityList[tIdx].Id + ' Opportunity:' + emsg + '\n';
                    }
                }
                // update opportunityList;
             } 
        }catch(Exception e){
            iflog.ErrorLog__c += 'ERROR : Opportunity:' + e.getMessage() + '\n';
       
        }
    }
 
    global void finish(Database.BatchableContext BC) {
        //更新该日志的数据信息
        iflog.Log__c += '\nNextMonthVisitTwoBatch end';
        String tmp = iflog.ErrorLog__c;
        if (tmp.length() > 65000) {
            tmp = tmp.substring(0, 65000);
            tmp += ' ...have more lines...';
            iflog.ErrorLog__c = tmp;
        }
        update iflog;
 
    }
    //HWAG-BML3AC 询价任务创建 精琢技术 wql 2020/04/10 end
}