global without sharing class SyncProvinceWIndowToSignForm implements Database.Batchable,Database.Stateful{ private Set changedWindowProvince{set;get;} global SyncProvinceWIndowToSignForm(Set changedWindowProvince) { this.changedWindowProvince = changedWindowProvince; } global Database.QueryLocator start(Database.BatchableContext BC) { String query = 'select Sales_assistant_name_text__c,isProcessed__c,OCM_man_province_cus__c from eSignForm__c '; query += ' where isProcessed__c = false '; if (changedWindowProvince != null && changedWindowProvince.size() >0 ) { query += ' and OCM_man_province_cus__c = :changedWindowProvince '; system.debug('SOQL' + query); return Database.getQueryLocator(query); } return null; } global void execute(Database.BatchableContext BC, List signFormList) { // 取得OCM管理省信息 Map provinceMap = DNUpsertBatch.getManagementProvince(); // 判断需要更新的签收单 List updList = new List(); for (eSignForm__c temp : signFormList) { String provinceName = temp.OCM_man_province_cus__c; if( provinceName != '' && provinceMap.containsKey(provinceName) && provinceMap.get(provinceName).Window1__c != null){ temp.Sales_assistant_name_text__c = provinceMap.get(provinceName).Window1__c; updList.add(temp); } } // 签收单更新 if (updList.size() > 0) { Database.SaveResult[] lsr = Database.update(updList, false); for (Integer tIdx = 0; tIdx < lsr.size(); tIdx++) { Database.SaveResult sr = lsr[tIdx]; if (!sr.isSuccess()) { Database.Error emsg = sr.getErrors()[0]; System.debug('=====Error Sign: ' + updList[tIdx].Id + ' msg: ' + emsg); } } } } global void finish(Database.BatchableContext BC) {} public static void syncProvinceWIndow(Set changedWindowProvince) { Database.executeBatch(new SyncProvinceWIndowToSignForm(changedWindowProvince),200); } }