//DB202312680435 市场分析日PBI和SFDC不一致 //刷新询价的最后修改时间 //背景:询价的市场分析日是公式跨对象取得招标的中标日,不更新询价的最后修改时间,PBI抽数据需要看最后修改时间 global class UpdateOppLastModifiedBatch implements Database.Batchable , Database.Stateful{ private final List oppIdList = null; global UpdateOppLastModifiedBatch(){ } global UpdateOppLastModifiedBatch(List str){ oppIdList = str; } global Database.QueryLocator start(Database.BatchableContext BC){ //Datetime datetime1 = Datetime.newInstance(2015,3,1,13,26,0); Date today = Date.today(); Date yesterday = Date.today().addDays(-1); Integer year = today.year(); Integer mon1 = today.month(); Integer day1 = today.day(); String mon = mon1 < 10 ? '0' + String.valueOf(mon1) : String.valueOf(mon1); String day = day1 < 10 ? '0' + String.valueOf(day1) : String.valueOf(day1); Integer yesyear = yesterday.year(); Integer yesmon1 = yesterday.month(); Integer yesday1 = yesterday.day(); String yesmon = mon1 < 10 ? '0' + String.valueOf(yesmon1) : String.valueOf(yesmon1); String yesday = yesday1 < 10 ? '0' + String.valueOf(yesday1) : String.valueOf(yesday1); String totime = year + '-' + mon + '-' + day + 'T18:00:00.000+0800'; String yestime = yesyear + '-' + yesmon + '-' + yesday + 'T18:00:00.000+0800'; System.debug('20240109---totime:'+totime); //select Id,Field,OldValue,NewValue from Tender_information__History String soql = 'Select Id,Field,OldValue,NewValue,CreatedDate,ParentId ' + 'From Tender_information__History ' + 'Where Field = \'Bid_Winning_Date__c\' '; if(!Test.isRunningTest()){ soql += 'And CreatedDate >= ' + yestime + ' And CreatedDate < ' + totime ; } if(oppIdList <> null){ soql += ' And ParentId in:oppIdList'; } System.debug('20240109---soql:'+soql); return Database.getQueryLocator(soql); } global void execute(Database.BatchableContext BC, List tenHList){ System.debug('20240109---tenHList---'+tenHList); Set tenIdList = new Set(); if(tenHList.Size() > 0 ){ for(Tender_information__History tenh : tenHList){ tenIdList.add(tenh.ParentId); } } //根据招标项目Id查找询价,更新询价的最后更新时间 if(tenIdList.Size() > 0 ){ List oppList = [Select id From Opportunity Where Bidding_Project_Name_Bid__c in :tenIdList]; if(oppList.Size() > 0){ StaticParameter.EscapeOppandStaTrigger = true; update oppList; StaticParameter.EscapeOppandStaTrigger = false; } } } global void finish(Database.BatchableContext BC){ Database.executebatch(new LastRepairUpdateBatch(),50);// WYL 2024/2/23 每天6点执行 } }