/*2021-07-08 mzy 点检任务 给任务发送时点是今天的点检计划生成被动任务 */ global class CreateInspectupTaskBatch implements Database.Batchable { public List tempInspectupPlanId = new List(); public boolean isexcuteAll = false; public boolean IsNeedExecute=false; //2021-03-08 mzy WLIG-BYHD79 SFDC环境batch合并调查 BatchIF_log__c log1 = new BatchIF_Log__c(); global CreateInspectupTaskBatch() { } //无条件生成所有点检计划的任务 global CreateInspectupTaskBatch(Boolean isexAll) { this.isexcuteAll = isexAll; } //指定点检计划无条件生成任务 global CreateInspectupTaskBatch(List tempInspectupPlanId) { this.tempInspectupPlanId = tempInspectupPlanId; } //Batch合并用 global CreateInspectupTaskBatch(String way,Boolean IsNeedExecute) { this.IsNeedExecute = IsNeedExecute; } global Database.QueryLocator start(Database.BatchableContext bc) { //Date today0 = Date.today(); //Date ThisMonthFirstDay = Date.newInstance(today0.year(),today0.month(),1); Date today = Date.today(); String query = 'SELECT Id,Maintenance_Contract__c,Planned_Start_Date__c,Planned_End_Date__c,Actual_Execution_Quantity_Inplan__c, '; query += 'Maintenance_Contract__r.Service_Contract_Staff__c,Maintenance_Contract__r.Department__c,Maintenance_Contract__r.Department__r.Name, '; query += 'taskFrequency__c,task__c,InspctupDate__c '; query += 'FROM Inspectup_Plan__c '; if(isexcuteAll == false){ if(tempInspectupPlanId.size()>0){ query += 'WHERE Id in :tempInspectupPlanId'; }else { query += 'WHERE ActualNumNoEqualsPlanNum__c = true AND Task_sending_time__c = :today '; query += 'AND (task__c = null OR (task__c != null and task__r.taskStatus__c in (\'02 接受\',\'03 完成\',\'04 取消\') ) )'; } } System.debug('SQL语句:'+query); return Database.getQueryLocator(query); } global void execute(Database.BatchableContext BC, list InspectupPlanList) { //定义变量保存生成的点检任务(被动任务) List NeedInsertTask = new List(); //定义变量保存记录类型 Id InspectUp_TaskId = Schema.SObjectType.task__c.getRecordTypeInfosByDeveloperName().get('InspectUp_Task').getRecordTypeId(); //定义变量保存要更新的点检计划 //List updateInspectupPlanList = new List(); //定义Map保存点检计划 Map updateInPlanMap = new Map(); //根据点检计划生成 对应的点检任务 for(Inspectup_Plan__c InspectupPlan :InspectupPlanList){ //生成任务 Task__c tempTask = new Task__c(); tempTask.RecordTypeId = InspectUp_TaskId; tempTask.taskDifferent__c = '被动任务'; tempTask.taskStatus__c = '01 分配'; tempTask.Maintenance_Contract__c = InspectupPlan.Maintenance_Contract__c; tempTask.assignee__c = InspectupPlan.Maintenance_Contract__r.Service_Contract_Staff__c; tempTask.account__c = InspectupPlan.Maintenance_Contract__r.Department__c; tempTask.Inspectup_Plan__c = InspectupPlan.id; tempTask.PlanEndDate__c = InspectupPlan.Planned_End_Date__c; //tempTask.Name = '点检任务(' + InspectupPlan.Maintenance_Contract__r.Department__r.Name + ')'; Integer num = Integer.valueOf(InspectupPlan.taskFrequency__c == null ? 0 : InspectupPlan.taskFrequency__c) + 1; if(num>=10){ tempTask.Name = 'FWCheck-'+num; }else{ tempTask.Name = 'FWCheck-0'+num; } tempTask.OwnerId = InspectupPlan.Maintenance_Contract__r.Service_Contract_Staff__c; NeedInsertTask.add(tempTask); InspectupPlan.taskFrequency__c = num; updateInPlanMap.put(InspectupPlan.Id,InspectupPlan); } if(NeedInsertTask.size()>0){ insert NeedInsertTask; List InsPlanList = new List(); for(Task__c t : NeedInsertTask){ if(updateInPlanMap.get(t.Inspectup_Plan__c)!= null){ Inspectup_Plan__c i = updateInPlanMap.get(t.Inspectup_Plan__c); //if(i.task__c != null && ('01 分配'.equals(i.task__r.taskStatus__c) // || '03 完成'.equals(i.task__r.taskStatus__c) // || '04 取消'.equals(i.task__r.taskStatus__c) ){ // i.task__c = t.id; //} i.task__c = t.id; updateInPlanMap.put(t.Inspectup_Plan__c,i); } } update updateInPlanMap.values(); } } global void finish(Database.BatchableContext BC) { } }