global class InquiryVerifyBatch implements Schedulable,Database.Batchable<SObject>,Database.Stateful {
|
public String query;
|
public Date start_date;
|
public Integer year;
|
public Integer month;
|
global InquiryVerifyBatch() {
|
this.query = query;
|
}
|
|
global InquiryVerifyBatch(Integer year, Integer month) {
|
if (year == null) {
|
this.year = 2021;
|
}
|
if (month == null) {
|
this.month = 4;
|
}
|
start_date = Date.newInstance(year, month, 1);
|
this.query = query;
|
}
|
public void execute(SchedulableContext sc) {
|
Database.executeBatch(this);
|
}
|
global Database.QueryLocator start(Database.BatchableContext bc) {
|
// 获取报价单数据
|
|
|
if (start_date!=null) {
|
query = 'select id,quoteSavedDate__c,Opportunity.Id,Opportunity.Department_Class__c from quote where Quote_No_last2__c = \'01\' and CreatedDate >= :start_date';
|
}else{
|
query = 'select id,quoteSavedDate__c,Opportunity.Id,Opportunity.Department_Class__c from quote where Quote_No_last2__c = \'01\' and CreatedDate = today';
|
}
|
|
System.debug(LoggingLevel.INFO, '*** query: ' + query);
|
return Database.getQueryLocator(query);
|
}
|
|
global void execute(Database.BatchableContext BC, list<quote> quotes) {
|
|
List<Opportunity> os = new List<Opportunity>();
|
List<String> qids = new List<String>();
|
List<String> oppDepartmentList = new List<String>();
|
List<String> ca4 = new List<String>();
|
for (quote quo : quotes) {
|
qids.add(quo.id);
|
oppDepartmentList.add(quo.Opportunity.Department_Class__c);
|
}
|
Map<String,List<String>> mapc4 = new Map<String,List<String>>();
|
for(List<QuoteLineItem> qlt:[Select Id,Product2.Category4__c,QuoteId
|
from QuoteLineItem
|
where QuoteId In :qids and Product2.Important_product__c = true]){
|
|
for ( QuoteLineItem qlt1:qlt ) {
|
ca4.add(qlt1.Product2.Category4__c);
|
}
|
if (!mapc4.containskey(qlt[0].QuoteId)) {
|
mapc4.put(qlt[0].QuoteId,ca4);
|
}
|
}
|
List<Rental_Apply_Equipment_Set_Detail__c> raesdList = [select id, product__c, Bollow_Date__c,Category4__c, Rental_Apply__r.Hospital__c,Rental_Apply__r.Strategic_dept__c
|
from Rental_Apply_Equipment_Set_Detail__c
|
where Rental_Apply__r.Demo_purpose2__c = '试用(无询价)'
|
AND Rental_Apply__r.Strategic_dept__c IN : oppDepartmentList
|
and Category4__c IN :ca4
|
order by Bollow_Date__c];
|
// 遍历报价单
|
for (quote quo: quotes) {
|
Opportunity o = New Opportunity();
|
o = quo.opportunity;
|
Date createdDateStr ;
|
// 提出报价单生成当日时间
|
if (quo.quoteSavedDate__c!=null){
|
createdDateStr = quo.quoteSavedDate__c;
|
}else{
|
createdDateStr = Date.today();
|
}
|
|
|
// 一年前的日期
|
Date createdDateYear = createdDateStr.addYears(-1);
|
|
for (Rental_Apply_Equipment_Set_Detail__c raesd : raesdList) {
|
if (raesd.Rental_Apply__r.Strategic_dept__c == quo.Opportunity.Department_Class__c && mapc4.containskey(quo.id) && mapc4.get(quo.id).contains(raesd.Category4__c) && raesd.Bollow_Date__c >= createdDateYear) {
|
o.WhetherTrySpareParts_3m__c = false;
|
o.WhetherTrySpareParts_6m__c = false;
|
o.WhetherTrySpareParts_1y__c = false;
|
Date bollDate = raesd.Bollow_Date__c;
|
if (bollDate != null && bollDate.addMonths(3) > createdDateStr) {
|
o.WhetherTrySpareParts_3m__c = true;
|
}
|
if (bollDate != null && bollDate.addMonths(6) > createdDateStr && bollDate.addMonths(3) < createdDateStr) {
|
o.WhetherTrySpareParts_6m__c = true;
|
}
|
if (bollDate != null && bollDate.addYears(1) > createdDateStr && bollDate.addMonths(6) < createdDateStr) {
|
o.WhetherTrySpareParts_1y__c = true;
|
}
|
}
|
}
|
|
os.add(o);
|
}
|
if (os.size()>0) {
|
Oly_TriggerHandler.bypass('AWSServiceTool2');
|
Oly_TriggerHandler.bypass('PIHelper');
|
update os;
|
system.debug('执行成功');
|
}else{
|
system.debug('执行失败');
|
}
|
}
|
|
global void finish(Database.BatchableContext BC) {
|
|
}
|
}
|