/*
|
* 为了代码写起来简单,设置为一次最多只能执行一条数据
|
* 这个batch是用作更新历史数据使用:
|
* 找出来有延期任务的源任务;
|
* 找一个源任务是当前源任务的最新延期任务,
|
* 把这个延期任务的日报一览和报告一览信息带过来
|
* ' and id != \'a3V10000001LYO6\''
|
' and id != \'a3V10000001Kp2S\''
|
' and id != \'a3V10000001L7vt\''
|
' and id != \'a3V10000001KUUb\''
|
' and id != \'a3V10000000dgSW\''
|
' and id != \'a3V10000000dXyV\''
|
' and id != \'a3V10000000dXya\''
|
*
|
*
|
*/
|
global class modifyInitTaskBatch implements Database.Batchable<sObject> {
|
public string taskID;
|
global modifyInitTaskBatch(string taskID){
|
this.taskID = taskID;
|
}
|
global modifyInitTaskBatch() {
|
}
|
// 检索有延期任务的任务,不包括已经因为离职,所以已经关闭的任务
|
global Database.QueryLocator start(Database.BatchableContext bc) {
|
String query = 'SELECT Id,Name,delayTask__c, Daily_Report__c , Event__c FROM task__c '
|
+'where delayTask__c !=null and delayTaskP__c = null '
|
+ ' and taskStatus__c != \'06 关闭\'';
|
if(string.isNotBlank(taskID)){
|
query += ' and ID = \'' + taskID + '\'';
|
}
|
return Database.getQueryLocator(query);
|
}
|
global void execute(Database.BatchableContext BC, List<task__c> tasklist) {
|
main(tasklist);
|
}
|
@TestVisible
|
private void main(List<task__c> tasklist){
|
// 因为每次只有一个初始任务赋值,所以这里取第一个;
|
task__c tempTask = tasklist[0];
|
// 预计要更新的任务List
|
List<task__c> updateTaskList = new List<task__c>();
|
//找所有源任务是当前源任务的延期任务,最新的排在前面
|
list<task__c> delayTaskList =
|
[select id , Daily_Report__c , Event__c , Daily_Report_Status__c,
|
event_Status__c from task__c
|
where Initial_Task__c = :tempTask.id
|
order by Activity_Date__c desc
|
NULLS last];
|
if(delayTaskList.size() > 0){
|
//找一个源任务是当前源任务的最新延期任务,
|
//把它的日报一览和报告一览赋值给当前源任务
|
task__c lastTask = delayTaskList[0];
|
tempTask.Daily_Report__c = lastTask.Daily_Report__c;
|
tempTask.Event__c = lastTask.Event__c;
|
//如果这个最新的延期任务的报告已经提交申请或者已经被批准
|
//那么就照这个这个更新源任务的状态2,
|
//如果报告一览的状态没值,那么就更新为完成,
|
//如果报告一览的状态有值并且是取消,那么就更新为取消;
|
if(lastTask.Daily_Report__c != null &&
|
(lastTask.Daily_Report_Status__c.equals('申請中')
|
|| lastTask.Daily_Report_Status__c.equals('承認'))){
|
if(lastTask.event_Status__c == null){
|
tempTask.taskStatus__c = '03 完成';
|
}else if(lastTask.event_Status__c.equals('取消')){
|
tempTask.taskStatus__c = '04 取消';
|
}
|
}
|
// 更新这个任务
|
update tempTask;
|
}
|
}
|
global void finish(Database.BatchableContext BC) {
|
}
|
}
|