global class EquipmentTargetCoverageBatch implements Database.Batchable { public String query; // public List prdIds = new List(); public List hospIds = new List(); global EquipmentTargetCoverageBatch() { this.query = query; } global Database.QueryLocator start(Database.BatchableContext bc) { // List classify = new List(); // classify.add('软性镜'); // classify.add('硬性镜'); // classify.add('周边'); // List prdList = [select Id,ServiceCategory__c from Product2 where ServiceCategory__c in :classify and Can_Repair__c != '不']; // system.debug('产品'+prdList); // if (prdList!=null) { // for (Product2 p : prdList) { // prdIds.add(p.Id); // } // } List Asset1 = [select count(Id),Hospital__c from asset where Product2.ServiceCategory__c ='软性镜' Group by Hospital__c having count(Id)>=5]; system.debug('第一重'+Asset1); if(Asset1!=null){ for (AggregateResult a1 : Asset1) { hospIds.add(String.valueOf(a1.get('Hospital__c'))); } } query = 'select Id,IF_Coverage_Target_Asset__c from asset where hospital__c in :hospIds' +' and Status != \'廃棄\' and Status != \'待报废\'' +' and SerMarGuranteeType__c != \'服务多年保修\' and SerMarGuranteeType__c != \'市场多年保修\'' +' and Product2.ServiceCategory__c != null'; return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BC, list Assets) { List AssetsNew = new List(); system.debug('第二重'+Assets); for (Asset a : Assets) { // a.IF_Coverage_Target_Asset__c = true; AssetsNew.add(a); } update AssetsNew; system.debug('执行完成'); } global void finish(Database.BatchableContext BC) { } }