global class OCMManagementProvinceBatch implements Database.Batchable { String query; String targetId; global OCMManagementProvinceBatch() {} global OCMManagementProvinceBatch(String oppId) { targetId = oppId; } global Database.QueryLocator start(Database.BatchableContext BC) { // 只更新询价【状态1】为"询价"和"注残"的 List stageList = new List(); stageList.add('引合'); stageList.add('注残'); // 取得询价对象 query = 'select id, Opportunity_Category__c, Owner.Dept__c, Sales_assistant_name_text__c, Account.OCM_Management_Province_HP__c, OCM_man_province__c, OCM_man_province_no_eng__c from Opportunity '; query += ' where StageName = :stageList '; if (targetId != null && targetId != '') { query += ' and id = :targetId '; } return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BC, List oppList) { // 取得OCM管理省信息 List mpList = [select id, Name, GI_assistant__c, SP_assistant__c, Energy_assistant__c from OCM_Management_Province__c]; Map mpMap = new Map(); for (OCM_Management_Province__c mp : mpList) { mpMap.put(mp.Name, mp); } // 判断需要更新的询价 List updList = new List(); for (Opportunity opp : oppList) { OCM_Management_Province__c mp = mpMap.get(opp.OCM_man_province_no_eng__c); Id uid = null; if (opp.OCM_man_province__c == '能量') { uid = mp == null ? null : mp.Energy_assistant__c; } else if (opp.Opportunity_Category__c == 'GI' || opp.Opportunity_Category__c == 'BF' || opp.Opportunity_Category__c == 'ET') { uid = mp == null ? null : mp.GI_assistant__c; } else { uid = mp == null ? null : mp.SP_assistant__c; } // 询价助理是否有变化 if (opp.Sales_assistant_name_text__c != uid) { Opportunity upd = new Opportunity( id = opp.Id, Sales_assistant_name_text__c = uid ); updList.add(upd); } } // 询价更新 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 Opp: ' + updList[tIdx].Id + ' msg: ' + emsg); } } } } global void finish(Database.BatchableContext BC) {} }