global class NFM512Batch implements Database.Batchable<sObject>, Database.AllowsCallouts {
    // 设定发送指定数据的ID
    public String setId;
    // 设定执行日期
    public String setDate;
    public String endDate;
    // 是否发送指定的数据
    public Boolean isAppoint = false;
    // 是否发送指定日期的数据
    public Boolean isSpecifyDate = false;
    // 设定发送的数据的IdList
    public List<String> setIdList;

    //发送当日符合条件的数据
    global NFM512Batch() {
        // String yesterday = Date.today().addDays(-1).format().replace('/', '-');
        // String today = Date.today().format().replace('/', '-');
        // this.setDate = yesterday + 'T00:00:00.000+0000';
        // this.endDate = today + 'T00:00:00.000+0000';
        // this.setDate = 'and ResultDate__c = LAST_N_DAYS:1 and ResultDate__c != LAST_N_DAYS:0 ';
        // this.setDate = ' and LastModifiedDate >= LAST_N_DAYS:1';
        // this.setDate = ' and (CreatedDate >= LAST_N_DAYS:3 OR (CreatedDate >= 2023-10-01T00:00:00.000+0800 and QLMGetDataTime__c >= LAST_N_DAYS:2))';
        this.setDate = ' and QLMGetDataTime__c >= LAST_N_DAYS:2'; //20231226
    }
    // 发送指定日期符合条件的数据, eg: testDate = Date.newInstance(2022, 05, 02),发送20220501完成签收的签收单
    global NFM512Batch(Date testDate) {
        isAppoint = true;
        isSpecifyDate = true;
        String yesterday = testDate.addDays(-1).format().replace('/', '-');
        String pointday = testDate.format().replace('/', '-');
        this.setDate = yesterday + 'T00:00:00.000+0800';
        this.endDate = pointday + 'T00:00:00.000+0800';
    }

    // 发送在指定日期(区间)的所有符合条件的数据  ***
    global NFM512Batch(Date testDate, Date testDate1) {
            isAppoint = true;
            isSpecifyDate = true;
            String pointday = testDate.format().replace('/', '-');
            String pointday1 = testDate1.format().replace('/', '-');
            this.setDate = pointday + 'T00:00:00.000+0800';
            this.endDate = pointday1 + 'T00:00:00.000+0800';
    }

    // 发送指定Id的数据
    global NFM512Batch(String setId) {
        this.setId = setId;
        this.isAppoint = true;
    }

    // 发送指定IdList的数据
    global NFM512Batch(List<String> setIdList) {
        this.setIdList = setIdList;
        this.isAppoint = true;
        System.debug('lt789---this.setIdList:' + this.setIdList);
    }

    global Database.QueryLocator start(Database.BatchableContext bc) {
        //转义符 \'
        String QLMrecordId = Schema.SObjectType.Tender_information__c.getRecordTypeInfosByDeveloperName().get('QLM').getRecordTypeId();
        System.debug('lt789---QLMrecordId:' + QLMrecordId);

        String query = 'select Id,name,TenderManageCode__c,InfoType__c,InfoTitle__c,'
                     + 'XmNumber__c,ZhaoBiaoUnit1__c,ZhongBiaoUnit1__c,CreatedDate,'
                     + 'ResultDate__c,InfoPublishTime__c,QLMGetDataTime__c '
                     + 'From Tender_information__c '
                     + 'Where RecordTypeId = \'' + QLMrecordId + '\''
                    //  + ' AND IsRelateProject__c = \'是\''  //20231226
                    + ' AND IsRelateProject__c != \'\'' //20231226
                    //  + ' AND Logical_delete__c = false'  //20240105
                    //  + ' AND ZCDataUpdate__c = false'  //20231226
                    //  + ' AND IsRelateProject__c != \'否\''
                     //  + ' AND InfoType__c = \'3：结果\''
                     //  + ' AND (subInfoType__c =\'3-5：中标通知\' OR subInfoType__c = \'3-6：合同公告\')'
                      ;
                      System.debug('lt789---query1:' + query);
        if(String.isNotBlank(setId)){
            query += ' and Id =: setId ';
        } else if (setIdList != null && setIdList.size() > 0) {
            query += ' and Id IN: setIdList ';
        } else if(!isAppoint){
            query += setDate;
        } else if(isSpecifyDate){
            // query += ' and LastModifiedDate >= ' + setDate;
            // query += ' and LastModifiedDate < ' + endDate;
            // this.setDate = ' and (InfoPublishTime__c >= LAST_N_DAYS:1 OR CreatedDate >= LAST_N_DAYS:1)'
            // OR QLMGetDataTime__c >= LAST_N_DAYS:1  //20231018
            query += ' and CreatedDate >= ' + setDate ;
            query += ' and CreatedDate < ' + endDate ;
        } 
        // else {
        //     System.debug('lt789---query2:' + query);
        //     query += ' and LastModifiedDate >= LAST_N_DAYS:0';
        // }
        System.debug('lt789---query:' + query);
        return Database.getQueryLocator(query);
    }

    global void execute(Database.BatchableContext BC, List<Tender_information__c> tenderList) {
        List<String> tenderIdList = new List<String>();
        if(tenderList.size() > 0){
            for(Tender_information__c ten : tenderList){
                tenderIdList.add(ten.Id);
            }
        }
        System.debug('lt789---tenderIdList:' + tenderIdList);

        if(tenderIdList.size() > 0){
            NFM512Controller.executeNotFuture(null, tenderIdList);
        }
    }

    global void finish(Database.BatchableContext BC) {
        
    }

    public void testMock(){
        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++;
        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++;
        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++;
        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++;
        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++;
        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++;
        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++;
        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++;
        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++;
        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++;
        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++;
        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++;
        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++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
        i++;
    }
}