global class Sfdc2SapDealersContractBatch implements Database.Batchable, Database.AllowsCallouts { Boolean IsNeedExecute = false; // 2021-03-10 mzy WLIG-BYHD79 SFDC环境batch合并调查 是否符合执行条件 //xinhonglu global Sfdc2SapDealersContractBatch() { } // 2021-03-10 mzy WLIG-BYHD79 SFDC环境batch合并调查 start global Sfdc2SapDealersContractBatch(Boolean NeedExecute) { this.IsNeedExecute = NeedExecute; } // 2021-03-10 mzy WLIG-BYHD79 SFDC环境batch合并调查 end global Database.QueryLocator start(Database.BatchableContext BC) { System.debug('================================进入batch'); return Database.getQueryLocator( [SELECT Id, RecordType_DeveloperName__c , RecordTypeId , Sap2sfdcDealers_ModifycationLogo__c, Is_Active_Formula__c, ContractSfdc2SapLog__c FROM Account where Is_Active_Formula__c = '有效' and ((Parent.Sap2sfdcDealers_ModifycationLogo__c = '1' and Parent.RecordType_DeveloperName__c = 'Agency') or Sap2sfdcDealers_ModifycationLogo__c = '1' )]); //[SELECT Id,RecordType_DeveloperName__c , RecordTypeId , Sap2sfdcDealers_ModifycationLogo__c, Is_Active_Formula__c,ContractSfdc2SapLog__c FROM Account where Is_Active_Formula__c = '有效' and ((Parent.Sap2sfdcDealers_ModifycationLogo__c = '1' and Parent.RecordType_DeveloperName__c = 'Agency') or (Sap2sfdcDealers_ModifycationLogo__c = '1' and RecordType_DeveloperName__c = 'Agency'))] //); } global void execute(Database.BatchableContext BC, List accList) { String[] needSendTypes = new String[] {'契約', '販売店'}; List updateAccountList = new List(); Map purposeOfAdviceMap = new Map(); List rects = [select Id, Name from RecordType where IsActive = true and SobjectType = 'Account' and Name IN :needSendTypes]; Map needSendRectMap = new Map(); for (RecordType rect : rects) { needSendRectMap.put(rect.Id, rect.Name); } BatchIF_Log__c iflog = new BatchIF_Log__c(); //iflog.Type__c = 'NFM001'; //iflog.ErrorLog__c = ''; //iflog.Log__c = 'callout start\n'; //iflog.Id = '20181211'; //insert iflog; //iflog = [Select Id, Name from BatchIF_Log__c where Id = :iflog.Id]; System.debug(Logginglevel.DEBUG, 'NFM001_' + iflog.Name + ' start'); //Savepoint sp = Database.setSavepoint(); try { List accIds = new List(); List accIdList2Applet = new List(); for (Account acc : accList) { acc.Sap2sfdcDealers_ModifycationLogo__c = '0'; if (needSendRectMap.get(acc.RecordTypeId) == '契約') { accIds.add(acc.Id); } purposeOfAdviceMap.put(acc.Id, acc.ContractSfdc2SapLog__c); if (needSendRectMap.get(acc.RecordTypeId) == '販売店'){ accIdList2Applet.add(acc.Id); } //if (needSendRectMap.get(acc.RecordTypeId) == '販売店'){ // //acc.Sap2sfdcDealers_ModifycationLogo__c = '0'; // updateAccountList.add(acc); //} updateAccountList.add(acc); } //if(updateAccountList.size()>0){ // upsert updateAccountList; //} NFM001Controller.calloutNotFuture(null, accIds, purposeOfAdviceMap, needSendRectMap); system.debug('accIdList2Applet--->'+accIdList2Applet); if (accIdList2Applet.size() > 0) { NFM601Controller.executefuture(null, accIdList2Applet); } if (updateAccountList.size() > 0) { upsert updateAccountList; } // system.debug('accIdList2Applet--->'+accIdList2Applet); // if (accIdList2Applet.size() > 0) { // NFM601Controller.executefuture(null, accIdList2Applet); // } iflog.Log__c = 'end\n'; } catch (Exception ex) { // エラーが発生した場合 //Database.rollback(sp); iflog.ErrorLog__c = ex.getMessage() + '\n' + ex.getStackTraceString() + '\n' + iflog.ErrorLog__c; iflog.Log__c = 'end\n'; } } global void finish(Database.BatchableContext BC) { } }