From fc8a8cea62e5d248834482a1ade9db6ab0758bf2 Mon Sep 17 00:00:00 2001 From: Li Jun <buli@deloitte.com.cn> Date: 星期日, 24 四月 2022 18:55:04 +0800 Subject: [PATCH] 20220424FixIssue --- force-app/main/default/classes/SyncAccountContactToAWS.cls | 29 +++++++++++++++++++++++------ 1 files changed, 23 insertions(+), 6 deletions(-) diff --git a/force-app/main/default/classes/SyncAccountContactToAWS.cls b/force-app/main/default/classes/SyncAccountContactToAWS.cls index 476cdba..df049b2 100644 --- a/force-app/main/default/classes/SyncAccountContactToAWS.cls +++ b/force-app/main/default/classes/SyncAccountContactToAWS.cls @@ -7,14 +7,15 @@ * 04/22/2022 - Bubba Li - Initial Code. * * */ -global class SyncAccountContactToAWS implements Database.Batchable<SObject>,Database.AllowsCallouts{ +global class SyncAccountContactToAWS implements Schedulable,Database.Batchable<SObject>,Database.AllowsCallouts{ + global String query; global SyncAccountContactToAWS(String query) { this.query = query; } global SyncAccountContactToAWS() { - 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'; + 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 Database.QueryLocator start(Database.BatchableContext bc) { system.debug('Query by custom soql:'+this.query); @@ -23,9 +24,9 @@ global void execute(Database.BatchableContext BC, list<Agency_Contact__c> scope) { if(scope!=null && scope.size()>0){ for(Agency_Contact__c aContact:scope){ - aContact.Doctor_Division1_Encrypted__c = aContact.Contact__r.Doctor_Division1_Encrypted__c; - aContact.Name_Encrypted__c = aContact.Contact__r.LastName_Encrypted__c; - aContact.Type_Encrypted__c = aContact.Contact__r.Type_Encrypted__c; + aContact.Doctor_Division1_Encrypted__c = aContact.Contact__c!=null&&aContact.Contact__r.Doctor_Division1_Encrypted__c!=''?aContact.Contact__r.Doctor_Division1_Encrypted__c:''; + aContact.Name_Encrypted__c = aContact.Contact__c!=null&&aContact.Contact__r.LastName_Encrypted__c!=''?aContact.Contact__r.LastName_Encrypted__c:''; + aContact.Type_Encrypted__c = aContact.Contact__c!=null&&aContact.Contact__r.Type_Encrypted__c!=''?aContact.Contact__r.Type_Encrypted__c:''; aContact.AWS_Data_Id__c = ''; } system.debug('Agency Contact Info to AWS:'+JSON.serialize(scope)); @@ -33,7 +34,23 @@ } } + global void execute(SchedulableContext SC) { + Id execBTId = Database.executeBatch(new SyncAccountContactToAWS(), 1); + } + + public static void assignOnceOneMinuteLater() { + 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(); + System.schedule('Job Started At ' + String.valueOf(Datetime.now()), nextFireTime, s); + } + global void finish(Database.BatchableContext BC) { - + AsyncApexJob a = [SELECT Id, Status, NumberOfErrors, JobItemsProcessed, TotalJobItems, CreatedBy.Email FROM AsyncApexJob WHERE Id = :BC.getJobId()]; + //then use the active job id and abort it + system.abortJob(a.id); } } \ No newline at end of file -- Gitblit v1.9.1