global class UpdateURFContactBatch implements Database.Batchable { public String query; public String conId; global UpdateURFContactBatch() { this.query = query; } global UpdateURFContactBatch(String conId) { this.query = query; this.conId = conId; } global Database.QueryLocator start(Database.BatchableContext bc) { query = 'select Id,Maintenance_Contract__c,Series_AllCount__c from Maintenance_Contract_Asset__c where '; query += ' Maintenance_Contract__r.Status__c = \'契約\' and Maintenance_Contract__r.URF_Contract__c = true '; if (conId != null && conId != '') { query += ' and Maintenance_Contract__c = :conId '; } return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BC, list scope) { Map MCMap = new Map(); for (Maintenance_Contract_Asset__c mca : scope) { if (MCMap.containsKey(mca.Maintenance_Contract__c) && mca.Series_AllCount__c) { MCMap.remove(mca.Maintenance_Contract__c); }else if (!MCMap.containsKey(mca.Maintenance_Contract__c) && mca.Series_AllCount__c == false) { Maintenance_Contract__c mc = new Maintenance_Contract__c(); mc.Id = mca.Maintenance_Contract__c; mc.Status__c = '契約満了'; mc.URFContact_EndDate__c = Date.today(); MCMap.put(mca.Maintenance_Contract__c, mc); } } if (MCMap.size() > 0) { update MCMap.values(); } } global void finish(Database.BatchableContext BC) { } }