From 784f9cec56eef3c7ac0ba02de98fdbf341c6a7b3 Mon Sep 17 00:00:00 2001 From: Li Jun <buli@deloitte.com.cn> Date: 星期一, 25 四月 2022 18:38:29 +0800 Subject: [PATCH] 0428IssueFix --- force-app/main/default/classes/SyncAccountContactToAWS.cls | 43 +++++++++++++++++++++++++++++++++++-------- 1 files changed, 35 insertions(+), 8 deletions(-) diff --git a/force-app/main/default/classes/SyncAccountContactToAWS.cls b/force-app/main/default/classes/SyncAccountContactToAWS.cls index 476cdba..9c0131e 100644 --- a/force-app/main/default/classes/SyncAccountContactToAWS.cls +++ b/force-app/main/default/classes/SyncAccountContactToAWS.cls @@ -7,25 +7,30 @@ * 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 String scheduleId{set;get;} 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 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'; + this.scheduleId = scId; } global Database.QueryLocator start(Database.BatchableContext bc) { - system.debug('Query by custom soql:'+this.query); + system.debug('Query by custom soql:'+this.query); return Database.getQueryLocator(this.query); } 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 +38,29 @@ } } + global void execute(SchedulableContext SC) { + Id execBTId = Database.executeBatch(new SyncAccountContactToAWS('',SC.getTriggerId()), 1); + system.debug('Batch Job Id:'+execBTId); + } + + 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('SyncAccountContactToAWS:' + String.valueOf(Datetime.now()), nextFireTime, s); + } + global void finish(Database.BatchableContext BC) { - + system.debug('Finish batch job Id:'+BC.getJobId()); + 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); + system.debug('Finish schedule job Id:'+scheduleId); + if(scheduleId!=null&&scheduleId!=''){ + system.abortJob(scheduleId); + } } } \ No newline at end of file -- Gitblit v1.9.1