From f90c63155656928b86f1ce1d91a134de3d12d2b9 Mon Sep 17 00:00:00 2001 From: Li Jun <buli@deloitte.com.cn> Date: 星期三, 27 四月 2022 18:26:41 +0800 Subject: [PATCH] SyncAContact0427 --- force-app/main/default/classes/SyncAccountContactToAWS.cls | 26 ++++++++++++++++++++++---- force-app/main/default/classes/ContactTriggerHandler.cls | 2 +- force-app/main/default/classes/SyncAccountContactToAWSTest.cls | 3 ++- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/force-app/main/default/classes/ContactTriggerHandler.cls b/force-app/main/default/classes/ContactTriggerHandler.cls index 3c3c299..ba22ecc 100644 --- a/force-app/main/default/classes/ContactTriggerHandler.cls +++ b/force-app/main/default/classes/ContactTriggerHandler.cls @@ -172,7 +172,7 @@ }else{ //Add By Li Jun for sync agency contact to aws 20220424 start if(!Test.isRunningTest()){ - SyncAccountContactToAWS.assignOnceOneMinuteLater(); + SyncAccountContactToAWS.assignOnceOneMinuteLater(aclist); } //Add By Li Jun for sync agency contact to aws 20220424 end } diff --git a/force-app/main/default/classes/SyncAccountContactToAWS.cls b/force-app/main/default/classes/SyncAccountContactToAWS.cls index 9c0131e..50e9478 100644 --- a/force-app/main/default/classes/SyncAccountContactToAWS.cls +++ b/force-app/main/default/classes/SyncAccountContactToAWS.cls @@ -18,7 +18,12 @@ this.query = 'SELECT id,Doctor_Division1__c,Doctor_Division1_Encrypted__c,Name,Name_Encrypted__c,Type__c,Type_Encrypted__c,AWS_Data_Id__c,Contact__c, Contact__r.Doctor_Division1_Encrypted__c,Contact__r.LastName_Encrypted__c, Contact__r.Type_Encrypted__c FROM Agency_Contact__c WHERE AWS_Data_Id__c =\'\' And Contact__c != null order by lastmodifieddate desc'; } global SyncAccountContactToAWS(String query,String scId) { - this.query = 'SELECT id,Doctor_Division1__c,Doctor_Division1_Encrypted__c,Name,Name_Encrypted__c,Type__c,Type_Encrypted__c,AWS_Data_Id__c,Contact__c, Contact__r.Doctor_Division1_Encrypted__c,Contact__r.LastName_Encrypted__c, Contact__r.Type_Encrypted__c FROM Agency_Contact__c WHERE AWS_Data_Id__c =\'\' And Contact__c != null order by lastmodifieddate desc'; + if(String.isBlank(query)||String.isEmpty(query)){ + this.query = 'SELECT id,Doctor_Division1__c,Doctor_Division1_Encrypted__c,Name,Name_Encrypted__c,Type__c,Type_Encrypted__c,AWS_Data_Id__c,Contact__c, Contact__r.Doctor_Division1_Encrypted__c,Contact__r.LastName_Encrypted__c, Contact__r.Type_Encrypted__c FROM Agency_Contact__c WHERE AWS_Data_Id__c =\'\' And Contact__c != null order by lastmodifieddate desc'; + }else{ + this.query = query; + } + system.debug('This query from Batch:'+this.query); this.scheduleId = scId; } global Database.QueryLocator start(Database.BatchableContext bc) { @@ -39,17 +44,30 @@ } global void execute(SchedulableContext SC) { - Id execBTId = Database.executeBatch(new SyncAccountContactToAWS('',SC.getTriggerId()), 1); + system.debug('this query from schedule execute method:'+this.query); + Id execBTId = Database.executeBatch(new SyncAccountContactToAWS(this.query,SC.getTriggerId()), 1); system.debug('Batch Job Id:'+execBTId); } - public static void assignOnceOneMinuteLater() { + public static void assignOnceOneMinuteLater(List<Agency_Contact__c> acList) { + system.debug('ACList:'+JSON.serialize(acList)); String hour = String.valueOf(Datetime.now().hour()); String min = String.valueOf(Datetime.now().minute() + 1); String ss = String.valueOf(Datetime.now().second()); //parse to cron expression String nextFireTime = ss + ' ' + min + ' ' + hour + ' * * ?'; - SyncAccountContactToAWS s = new SyncAccountContactToAWS(); + //Prepare the soql to agency account + String soqlForAgencyAccount = ''; + if(acList!=null && acList.size()>0){ + soqlForAgencyAccount = 'SELECT id,Doctor_Division1__c,Doctor_Division1_Encrypted__c,Name,Name_Encrypted__c,Type__c,Type_Encrypted__c,AWS_Data_Id__c,Contact__c, Contact__r.Doctor_Division1_Encrypted__c,Contact__r.LastName_Encrypted__c, Contact__r.Type_Encrypted__c FROM Agency_Contact__c WHERE id in '; + List<String> acIds = new List<String>(); + for(Agency_Contact__c ac:acList ){ + acIds.add(ac.Id); + } + soqlForAgencyAccount = soqlForAgencyAccount + '(\'' + String.join(acIds, '\', \'') + '\')'; + } + system.debug('SOQL for agency:'+soqlForAgencyAccount); + SyncAccountContactToAWS s = new SyncAccountContactToAWS(soqlForAgencyAccount); System.schedule('SyncAccountContactToAWS:' + String.valueOf(Datetime.now()), nextFireTime, s); } diff --git a/force-app/main/default/classes/SyncAccountContactToAWSTest.cls b/force-app/main/default/classes/SyncAccountContactToAWSTest.cls index e926376..4803dc6 100644 --- a/force-app/main/default/classes/SyncAccountContactToAWSTest.cls +++ b/force-app/main/default/classes/SyncAccountContactToAWSTest.cls @@ -41,12 +41,13 @@ //String soql = 'SELECT id,Doctor_Division1__c,Doctor_Division1_Encrypted__c,Name,Name_Encrypted__c,Type__c,Type_Encrypted__c,AWS_Data_Id__c,Contact__c, Contact__r.Doctor_Division1_Encrypted__c,Contact__r.LastName_Encrypted__c, Contact__r.Type_Encrypted__c FROM Agency_Contact__c WHERE id=\'a2R10000001cfatEAA\' And AWS_Data_Id__c =\'\' And Contact__c != null'; String soql = 'SELECT id,Doctor_Division1__c,Doctor_Division1_Encrypted__c,Name,Name_Encrypted__c,Type__c,Type_Encrypted__c,AWS_Data_Id__c,Contact__c, Contact__r.Doctor_Division1_Encrypted__c,Contact__r.LastName_Encrypted__c, Contact__r.Type_Encrypted__c FROM Agency_Contact__c WHERE AWS_Data_Id__c =\'Test AWS\''; SyncAccountContactToAWS contactBatch = new SyncAccountContactToAWS(soql); + SyncAccountContactToAWS contactBatchTest = new SyncAccountContactToAWS(); Id execBTId = Database.executeBatch(contactBatch,1); }catch(Exception e){ system.debug('Exception from sync aws batch:'+ e.getMessage()); } try{ - SyncAccountContactToAWS.assignOnceOneMinuteLater(); + SyncAccountContactToAWS.assignOnceOneMinuteLater(new List<Agency_Contact__c>()); }catch(Exception e){ system.debug('Exception from sync aws scheduler:'+ e.getMessage()); } -- Gitblit v1.9.1