/** *数据信息来源于会议的主页面的学员信息栏表格,数据每个季度末保留一个值 * 备份岗位状态、岗位状态更新日期、跟进状态、开展工作.是否有过被带教经历、带教时长(月)、是否负责内镜工作,备份日期等等 */ global class UpdateThreeMonthlyContactBatch implements Database.Batchable { public List idList; public string testid; Boolean IsNeedExecute = false; // 2021-03-03 mzy WLIG-BYHD79 SFDC环境batch合并调查 是否符合执行条件 global UpdateThreeMonthlyContactBatch() { idList = null; } global UpdateThreeMonthlyContactBatch(List idlist) { this.idList = idlist; } global UpdateThreeMonthlyContactBatch(string testid) { this.testid = testid; } //2021-03-03 mzy WLIG-BYHD79 SFDC环境batch合并调查 start global UpdateThreeMonthlyContactBatch(Boolean needExecute) { idList = null; this.IsNeedExecute = needExecute; } //2021-03-03 mzy WLIG-BYHD79 SFDC环境batch合并调查 end global Database.QueryLocator start(Database.BatchableContext BC) { String sql = 'select id,Name,Campaign__c,OnJobState__c,Follow_state__c,ProcessingWorkWithoutNumber__c,IsTaught__c,' + 'teachMonth_real__c, JobStatusUpdateDate__c, IsEndoscope__c from Contact where Campaign__c !=null '; if (idList != null ) { sql += + ' and id in: idList'; } if (!string.isblank(testid)) { sql += ' and id =: testid'; } // 2021-03-03 mzy WLIG-BYHD79 SFDC环境batch合并调查 start // 1月 4月 7月 10月 1日 不满足运行时间,可以使查询到的结果为空 //Date mon1stDate = Date.newInstance(today.year(), today.month(), 1); Integer executeMonth = Date.today().month(); Integer executeDay = Date.today().day(); Boolean inexecutionDateFlag = true; if ( executeMonth == 1 || executeMonth == 4 || executeMonth == 7 || executeMonth == 10) { if (executeDay == 1){ inexecutionDateFlag = false; } } if(inexecutionDateFlag && IsNeedExecute == true){ sql = 'Select Id from Contact where Name = \'\' AND Name != \'\' '; } //2021-03-03 mzy WLIG-BYHD79 SFDC环境batch合并调查 end return Database.getQueryLocator(sql); } global void execute(Database.BatchableContext BC, List scope) { List TMCList = new List(); String temp = ''; Integer m = 0; if (Date.today().day() == 1 && Date.today().month() != 1) { m = Date.today().month() - 1; } else if (Date.today().day() == 1 && Date.today().month() == 1) { m = 12; } else { m = Date.today().month(); } if ( m >= 1 && m <= 3) { temp = 'S1'; } if ( m >= 4 && m <= 6) { temp = 'S2'; } if ( m >= 7 && m <= 9) { temp = 'S3'; } if ( m >= 10 && m <= 12) { temp = 'S4'; } for (sObject sco : scope) { Contact clist = (Contact) sco; ThreeMonthlyContact__c TMC = new ThreeMonthlyContact__c(); TMC.Name = clist.Name; TMC.Campaign__c = clist.Campaign__c; TMC.OnJobState__c = clist.OnJobState__c; TMC.Follow_state__c = clist.Follow_state__c; TMC.ProcessingWork__c = clist.ProcessingWorkWithoutNumber__c; TMC.IsTaught__c = clist.IsTaught__c; TMC.teachmonth__c = clist.teachMonth_real__c; TMC.JobStatusUpdateDate__c = clist.JobStatusUpdateDate__c; TMC.Contact__c = clist.id; TMC.IsEndoscope__c = clist.IsEndoscope__c; Integer y = Date.today().month() == 1 ? Date.today().year() : Date.today().year() - 1; TMC.year__c = String.valueOf(y); TMC.season__c = temp; if ( Date.today().day() == 1 && Date.today().month() == 1 ) { TMC.season__c = 'S4'; } if ( Date.today().day() == 1 && Date.today().month() == 4 ) { TMC.season__c = 'S1'; } if ( Date.today().day() == 1 && Date.today().month() == 7 ) { TMC.season__c = 'S2'; } if ( Date.today().day() == 1 && Date.today().month() == 10 ) { TMC.season__c = 'S3'; } TMC.date__c = Date.today(); TMCList.add(TMC); } insert TMCList; } global void finish(Database.BatchableContext BC) { //2021-03-03 mzy WLIG-BYHD79 SFDC环境batch合并调查 start if(!Test.isRunningTest() &&IsNeedExecute==true){ //batch里调用下一个batch时,希望跟原有的Schedule里面传的条数保持一致 Id execBTId = Database.executebatch(new UpdateMonthlyContactBatch(true),50); } //2021-03-03 mzy WLIG-BYHD79 SFDC环境batch合并调查 end } }