New file |
| | |
| | | global class AccAssumeChangeBatch implements Database.Batchable<sObject> , Database.AllowsCallouts, Database.Stateful { |
| | | public List<Account> HospitalIdList;//执行失败手动录入医院 |
| | | Boolean a = true; |
| | | //执行失败手动录入医院 |
| | | global AccAssumeChangeBatch(List<Account> HospitalIdList) { |
| | | this.HospitalIdList = HospitalIdList; |
| | | } |
| | | global AccAssumeChangeBatch( boolean a) { |
| | | this.a = a; |
| | | } |
| | | // 执行靶器 |
| | | global AccAssumeChangeBatch() { |
| | | |
| | | } |
| | | |
| | | global Database.QueryLocator start(Database.BatchableContext bc) { |
| | | // 检索医院(用来对应其关联的招投标) |
| | | String query = 'Select Id, Assume_Change__c FROM Account '; |
| | | if (a) { |
| | | query += 'Where Assume_Change__c = true'; |
| | | } |
| | | if (HospitalIdList.size() > 0) { |
| | | query += ' And Id in : HospitalIdList'; |
| | | } |
| | | return Database.getQueryLocator(query); |
| | | } |
| | | |
| | | global void execute(Database.BatchableContext BC, list<Account> HosinfoList) { |
| | | List<Tender_information__c> TenInfoList = [Select Id, Hospital__c, Hospital1__c, Hospital2__c, Hospital3__c, |
| | | Hospital4__c from Tender_information__c |
| | | Where Hospital__c in: HosinfoList or Hospital1__c in: HosinfoList |
| | | or Hospital2__c in: HosinfoList or Hospital3__c in: HosinfoList |
| | | or Hospital4__c in: HosinfoList ]; |
| | | |
| | | if (TenInfoList.size() > 0) { |
| | | // List<Tender_information__c> failedTenderList = new List<Tender_information__c>(); |
| | | Map<String, String> failedAccountMap = new Map<String, String>();//如果招投标更新失败,用来存更新失败的招投标所关联的医院 |
| | | // 空更新招投标 |
| | | Database.SaveResult[] saveTenderResults = Database.update(TenInfoList, false); |
| | | // 循环更新结果,取出空更新失败的招投标所对应的医院 |
| | | for (Integer i = 0; i < saveTenderResults.size(); i++) { |
| | | if (!saveTenderResults.get(i).isSuccess() || System.Test.isRunningTest()) { |
| | | // failedTenderList.add(TenInfoList.get(i)); |
| | | String HospitalId = TenInfoList.get(i).Hospital__c; |
| | | String Hospital1Id = TenInfoList.get(i).Hospital1__c; |
| | | String Hospital2Id = TenInfoList.get(i).Hospital2__c; |
| | | String Hospital3Id = TenInfoList.get(i).Hospital3__c; |
| | | String Hospital4Id = TenInfoList.get(i).Hospital4__c; |
| | | failedAccountMap.put(HospitalId, HospitalId); |
| | | failedAccountMap.put(Hospital1Id, Hospital1Id); |
| | | failedAccountMap.put(Hospital2Id, Hospital2Id); |
| | | failedAccountMap.put(Hospital3Id, Hospital3Id); |
| | | failedAccountMap.put(Hospital4Id, Hospital4Id); |
| | | } |
| | | } |
| | | List<Account> accsList = new List<Account>();// 用来更新客户信息(担当发生变化) |
| | | for (Account accs : HosinfoList) { |
| | | if (!failedAccountMap.containsKey(accs.Id) ) { |
| | | accs.Assume_Change__c = false; |
| | | accsList.add(accs); |
| | | } |
| | | } |
| | | if (accsList.size() > 0) { |
| | | update accsList; |
| | | } |
| | | } |
| | | } |
| | | |
| | | global void finish(Database.BatchableContext BC) { |
| | | |
| | | } |
| | | } |