global without sharing class ConsumTrialNotUploadRemindBatch implements Database.Batchable<sObject> {
|
global List<String> emailMessages = new List<String>();
|
global Integer totalCount = 0; // 総処理件数
|
global Integer totalCountDone = 0; // 処理済件数
|
global Integer failedCount = 0; // 処理失敗件数
|
global Date today60Ago = Date.today().addDays(-60);
|
global Date today1yearAgo = Date.today().addyears(-1); //2021-06-02 mzy 备品课题-1577
|
|
Boolean IsNeedExecute = false; // 2021-03-05 mzy WLIG-BYHD79 SFDC环境batch合并调查 是否符合执行条件
|
|
// 2021-03-05 mzy WLIG-BYHD79 SFDC环境batch合并调查 start
|
global ConsumTrialNotUploadRemindBatch(Boolean NeedExecute) {
|
this.IsNeedExecute = NeedExecute;
|
}
|
// 2021-03-05 mzy WLIG-BYHD79 SFDC环境batch合并调查 end
|
|
global ConsumTrialNotUploadRemindBatch(Integer d) {
|
this.today60Ago = Date.today().addDays(-d);
|
}
|
|
global ConsumTrialNotUploadRemindBatch() {
|
}
|
|
global Database.QueryLocator start(Database.BatchableContext bc) {
|
//2021-06-02 mzy 备品课题-1577 start
|
//原本的功能点 :
|
//“最晚预计使用日+60天”前若未上传试用表或上传的试用表不合格,则每天给申请人推送邮件
|
//现在针对借用目的是ET展箱,单独设置---备品中心出库日一年内还没有上传适用表或者不合格的情况,则每天给申请人推送邮件
|
return Database.getQueryLocator([
|
SELECT Need_Send_Trial_Upload_Email__c
|
, HP_received_sign_rich__c
|
FROM Consum_Apply__c
|
WHERE
|
(
|
( demo_purpose2__c != 'ET展箱' AND Asset_loaner_start_date__c < :today60Ago) // 60天前
|
OR
|
( demo_purpose2__c = 'ET展箱' AND Bollow_Date__c < :today1yearAgo)//1年前
|
)
|
AND (Consum_Trial_Update_Time__c = null OR HP_received_sign_NG__c = true) // 未上传试用表或试用表不合格
|
AND Shippment_loaner_time__c != null
|
AND RA_Status__c != :Consum_ApplyUtil.CaStatusMap.get(Consum_ApplyUtil.CaStatus.Qu_Xiao.ordinal())
|
AND RA_Status__c != :Consum_ApplyUtil.CaStatusMap.get(Consum_ApplyUtil.CaStatus.Shan_Chu.ordinal())
|
]);
|
|
//2021-06-02 mzy 备品课题-1577 end
|
}
|
|
global void execute(Database.BatchableContext BC, List<Consum_Apply__c> caList) {
|
totalCount += caList.size();
|
Savepoint sp = Database.setSavepoint();
|
try{
|
List<Consum_Apply__c> caListUpdate = new List<Consum_Apply__c>();
|
for(Consum_Apply__c ca : caList) {
|
ca.Need_Send_Trial_Upload_Email__c = true;
|
caListUpdate.add(ca);
|
}
|
|
FixtureUtil.withoutUpdate(caListUpdate);
|
totalCountDone += caListUpdate.size();
|
}
|
catch(Exception e) {
|
emailMessages.add(e.getMessage());
|
failedCount += caList.size();
|
Database.rollback(sp);
|
}
|
|
|
}
|
|
global void finish(Database.BatchableContext bc) {
|
BatchEmailUtil be = new BatchEmailUtil();
|
String[] toList = new String[]{UserInfo.getUserEmail()};
|
String emailLabel = 'BatchNotify';
|
for (OrgWideEmailAddress tmpEmailObj : [SELECT Id, Address, DisplayName
|
FROM OrgWideEmailAddress
|
WHERE DisplayName like :emailLabel]) {
|
toList = new String[]{tmpEmailObj.Address};
|
}
|
String title = '提醒申请人上传耗材试用表';
|
List<String> ccList = new List<String>();
|
for (Consum_Apply_Meta__mdt camd : [SELECT Id
|
, Key__c
|
, ValueLong__c
|
FROM Consum_Apply_Meta__mdt
|
WHERE Package__c = 'ConsumTrialNotUploadRemindBatch'
|
AND (Key__c = 'ErrorMailAddress'
|
OR Key__c = 'ErrorMailTitle'
|
)
|
ORDER BY Key__c]) {
|
if (camd.Key__c == 'ErrorMailAddress') {
|
if (String.isNotBlank(camd.ValueLong__c)) {
|
ccList.addAll(camd.ValueLong__c.split(','));
|
}
|
}
|
else if (camd.Key__c == 'ErrorMailTitle') {
|
title = camd.ValueLong__c;
|
}
|
}
|
if (!(totalCountDone == totalCount && 0 == emailMessages.size())) {
|
be.failedMail(toList, ccList, title,
|
String.join(this.emailMessages, '\n'),
|
totalCount, totalCountDone, failedCount);
|
be.send();
|
}
|
//2021-04-21 mzy add SFDC点检报告更新逻辑修改 start
|
if(!Test.isRunningTest() &&IsNeedExecute==true){
|
//batch里调用下一个batch时,希望跟原有的Schedule里面传的条数保持一致
|
Id execBTId = Database.executebatch(new UpdateInspectionReportAssetBatch(true),100);
|
}
|
//2021-04-21 mzy add SFDC点检报告更新逻辑修改 end
|
|
}
|
@TestVisible private static void test() {
|
if (false == Test.isRunningTest()) return;
|
Integer i = 0;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
i++;
|
}
|
}
|