高章伟
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
//create by tcm 2021-11-15    batch版累计汇总(条件)
global class UpdateAssetReturnTimeBatch implements Database.Batchable<sObject>, Database.Stateful {
    public List<String> tempIds;
    public String history;// 20211129 ljh add start
    global UpdateAssetReturnTimeBatch(List<String> tempId) {
        this.tempIds = tempId;
    }
    global UpdateAssetReturnTimeBatch() {
        this.tempIds = new List<String>();
        this.History = '';
    }
    // 20211129 ljh add start
    global UpdateAssetReturnTimeBatch(String type) {
        this.history = type;
    }
    // 20211129 ljh add start
    global Database.QueryLocator start(Database.BatchableContext bc) {
        // 20211129 ljh add start
        Date mdDay = Date.newInstance(2020, 04, 01);
        Date st = mdDay.toStartOfWeek();
        Datetime laststart = Datetime.newInstance(st.year(), st.month(), st.day(), 8, 0, 0);
        // 20211129 ljh add end
        String sql ='select id FROM Rental_Apply__c ';
        // 20211129 ljh add start
        sql += 'where Asset_return_time_OK__c = null and Asset_return_time__c != null and Asset_return_time_OK_Flag__c = false';
        sql += ' AND CreatedDate >= :laststart ';
        // 20211129 ljh add end
        if (tempIds != null && tempIds.size() > 0) {
            sql += 'and  Id in :tempIds ';
        }
        return Database.getQueryLocator(sql);
    }
 
    global void execute(Database.BatchableContext BC, list<Rental_Apply__c> raList) {
        List<String> raIdList=new List<String>();
        for (Rental_Apply__c ra : raList) {
            raIdList.add(ra.Id);
        }
        List<AggregateResult> raesList=[select Rental_Apply__c,MIN(Asset_return_time__c) art FROM Rental_Apply_Equipment_Set__c WHERE Rental_Apply__c in :raIdList and Received_Confirm__c!=null AND Received_Confirm__c!='NG' AND Asset_return_time__c !=NULL group by Rental_Apply__c];
 
        List<Rental_Apply__c> racList=new List<Rental_Apply__c>();
        for (AggregateResult raes : raesList) {
            Rental_Apply__c ra=new Rental_Apply__c();
            ra.Id=(Id)raes.get('Rental_Apply__c');
            ra.Asset_return_time_OK__c=(Datetime)raes.get('art');
            ra.Asset_return_time_OK_Flag__c = true; // 20211129 ljh add 
            racList.add(ra);
        }
        update racList;
    }
 
    global void finish(Database.BatchableContext BC) {
        // 20220113 ljh add 排队对应关系系列 start
        if(!System.Test.isRunningTest()){
            database.executebatch(new RentalQueueShippmentDate0Batch(),50);
        }
        // 20220113 ljh add 排队对应关系系列 end
    }
}