global class RentalTaskDispatchBatch implements Database.Batchable { public RentalTaskDispatchBatch() { } global Database.QueryLocator start(Database.BatchableContext BC) { String query = 'SELECT Id, Rental_Apply__c,HadLostReport_Detail__c,Confirm_Lost_Date__c,Loaner_Giveup_Time__c ,Is_Body__c FROM Rental_Apply_Equipment_Set_Detail__c ' + ' where (HadLostReport_Detail__c = false and Confirm_Lost_Date__c != null and Loaner_Giveup_Time__c = null)'+ ' or ( HadLostReport_Detail__c = false and Confirm_Lost_Date__c = null and Loaner_Giveup_Time__c = null '+ ' and Check_lost_Item_F__c = \'欠品\' and Return_DeliverySlip__r.Name = null and Lost_item_giveup__c = false )'; //Rental_Apply_Equipment_Set_Detail__c HadLostReport_Detail__c 是否填写过遗失报告 // Confirm_Lost_Date__c 确认遗失时间 Loaner_Giveup_Time__c 欠品断念时间 Check_lost_Item_F__c 欠品确认结果 // Return_DeliverySlip__r.Name 回寄运输单: 备品运输单号 Lost_item_giveup__c 放弃欠品回收 System.debug('query---'+query); return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BC, List rentalApplyList) { //main(tasklist); Set loseIds = new Set(); Set deficitIds = new Set(); Set zhutiIds = new Set(); // 主体 for (Rental_Apply_Equipment_Set_Detail__c raesd : rentalApplyList){ if( raesd.Is_Body__c){ zhutiIds.add(raesd.Rental_Apply__c); } if(raesd.Confirm_Lost_Date__c == null){ deficitIds.add(raesd.Rental_Apply__c); }else{ loseIds.add(raesd.Rental_Apply__c); } } if(loseIds.size() > 0){ List loseRentalApplyList = [select id,name from Rental_Apply__c where id in :loseIds]; List loseTaskList= new List(); for(Rental_Apply__c rentalApply : loseRentalApplyList){ Task__c tsk = new Task__c(); tsk.RentalApply__c = rentalApply.id; tsk.recordtypeId = Schema.SObjectType.task__c.getRecordTypeInfosByDeveloperName().get('RentalLose').getRecordTypeId(); tsk.distributionCount__c = 1; if(zhutiIds.contains(rentalApply.id)){ tsk.isMainPart__c = true; } loseTaskList.add(tsk); } insert loseTaskList; } if(deficitIds.size() > 0){ List deficitRentalApplyList = [select id,name from Rental_Apply__c where id in :deficitIds]; List deficitTaskList= new List(); for(Rental_Apply__c rentalApply : deficitRentalApplyList){ Task__c tsk = new Task__c(); tsk.RentalApply__c = rentalApply.id; tsk.recordtypeId = Schema.SObjectType.task__c.getRecordTypeInfosByDeveloperName().get('RentalDeficit').getRecordTypeId(); tsk.distributionCount__c = 1; deficitTaskList.add(tsk); } insert deficitTaskList; } } global void finish(Database.BatchableContext BC) { } }