global class Create888AlarmBatch implements Database.Batchable , Database.AllowsCallouts, Database.Stateful { public Date installDate = Date.newInstance(1900, 1, 1); public Date nowDate = Date.today(); global Create888AlarmBatch() { } //Database.QueryLocator global List start(Database.BatchableContext bc) { //Is_Add_888_Alarm__c = 'False' 首次执行去掉这个条件或者更新所有Asset的这个字段为False List assetList = [Select Id,InstallDate,SerMarGuranteeType__c,InstallDate__c,Extend_Gurantee_DateTo__c,CurrentContract__c,CurrentContract_Start_Date__c,CurrentContract_End_Date__c,Is_Add_888_Alarm__c FROM Asset Where Is_Add_888_Alarm__c = 'False' AND (InstallDate!= null OR InstallDate!= :installDate) AND ((CurrentContract_End_Date__c >=: nowDate AND CurrentContract_Start_Date__c <= :nowDate) OR (Extend_Gurantee_DateTo__c >= :nowDate AND InstallDate__c <= :nowDate ))]; /*return Database.getQueryLocator([Select Id,InstallDate,SerMarGuranteeType__c,InstallDate__c,Extend_Gurantee_DateTo__c,CurrentContract__c,CurrentContract_Start_Date__c,CurrentContract_End_Date__c,Is_Add_888_Alarm__c FROM Asset Where Is_Add_888_Alarm__c = 'False' AND (InstallDate!= null OR InstallDate!= :installDate) AND ((CurrentContract_End_Date__c >=: nowDate AND CurrentContract_Start_Date__c <= :nowDate) OR (Extend_Gurantee_DateTo__c >= :nowDate AND InstallDate__c <= :nowDate )) AND Id = '02i100000036gbhAAA' LIMIT 1]);*/ return assetList; } global void execute(Database.BatchableContext BC,List assetList) { //assetList = [Select Id,InstallDate,SerMarGuranteeType__c,InstallDate__c,Extend_Gurantee_DateTo__c,CurrentContract__c,CurrentContract_Start_Date__c,CurrentContract_End_Date__c,Is_Add_888_Alarm__c FROM Asset Where Is_Add_888_Alarm__c = 'False' AND (InstallDate!= null OR InstallDate!= :installDate)]; System.debug(LoggingLevel.INFO, '*** assetList: ' + assetList); if (assetList.size() > 0) { List alarm888List= new List(); for (Asset asset : assetList) { Integer alarmNumber = 1; if (asset.SerMarGuranteeType__c != null) { //多年保 // Date startDate = nowDate= asset.Extend_Gurantee_DateTo__c) { Alarm_888_Month__c alarm888Last = new Alarm_888_Month__c(); numberStr = '第'+alarmNumber+'次做业务'; alarm888Last.Number_Of_Operations__c = numberStr; alarm888Last.Nth_Operating_Day__c = asset.Extend_Gurantee_DateTo__c.addMonths(-3); alarm888Last.Alarm_Date__c = alarm888Last.Nth_Operating_Day__c.addMonths(-2); alarm888Last.Asset_ID__c = asset.Id; alarm888List.add(alarm888Last); } } /* if (asset.SerMarGuranteeType__c == '市场多年保修') { //23.8,24.2,24.8,25.2 24.9 end-start 时间 }else if (asset.SerMarGuranteeType__c == '服务多年保修') { while(startDate <= asset.Extend_Gurantee_DateTo__c.addDays(5) && alarmNumber<=8){ Alarm_888_Month__c alarm888 = new Alarm_888_Month__c(); String numberStr = '第'+alarmNumber+'次做业务'; alarm888.Number_Of_Operations__c = numberStr; alarm888.Nth_Operating_Day__c = startDate.addMonths(6); alarm888.Alarm_Date__c = alarm888.Nth_Operating_Day__c.addMonths(-2); alarm888.Asset_ID__c = asset.Id; alarm888List.add(alarm888); alarmNumber++; startDate = startDate.addMonths(6); } }*/ }else{ //维修合同 //Date startDate = nowDate