public without sharing class BatchEmailUtil {
|
/** メッセージリスト */
|
private List<Messaging.SingleEmailMessage> messages = new List<Messaging.SingleEmailMessage>();
|
/**
|
* メッセージ追加
|
* @param message メッセージ
|
*/
|
private void addMessage(Messaging.SingleEmailMessage message) {
|
if(messages == null) {
|
messages = new List<Messaging.SingleEmailMessage>();
|
}
|
messages.add(message);
|
}
|
/**
|
* メール送信
|
*/
|
public void send() {
|
if (System.Test.isRunningTest() == false
|
&& messages != null && messages.size() > 0) {
|
Messaging.sendEmail(messages);
|
}
|
}
|
public void successMail(String title, Integer successCount) {
|
successMail(null, null, title, successCount, '');
|
}
|
public void successMail(String[] toStr, String[] ccStr, String title, Integer successCount) {
|
successMail(toStr, ccStr, title, successCount, '');
|
}
|
public void successMail(String[] toStr, String[] ccStr, String title, Integer successCount, String text) {
|
String subject = title+'执行成功 结束时间:' + Datetime.now().format();
|
text += '\n*******处理结果*******\n'
|
+ '总件数 : ' + String.valueOf(successCount)+'\n'
|
+ '*********结束*********\n';
|
Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
|
message.setReplyTo(UserInfo.getUserEmail());
|
message.setCharset('UTF-8');
|
// 差出人は通知用メールアドレス
|
//message.setSenderDisplayName(System.Label.mms_info_mailaddress);
|
//OrgWideEmailAddress owa = CommonUtil.getOrgWideEmailAddress(System.Label.mms_info_mailaddress);
|
//message.setOrgWideEmailAddressId(owa.Id);
|
// 送信人
|
if (toStr == null || toStr.size() == 0) {
|
message.setToAddresses(new String[] {UserInfo.getUserEmail()});
|
} else {
|
message.setToAddresses(toStr);
|
}
|
// CC
|
if (ccStr != null && ccStr.size() != 0) {
|
message.setCcAddresses(ccStr);
|
}
|
// 件名
|
message.setSubject(subject);
|
// 本文
|
message.setPlainTextBody(text);
|
message.setUseSignature(false);
|
addMessage(message);
|
}
|
//20210830 you 邮件 CSV存档邮件推送
|
public void successMail(String[] toStr, String[] ccStr, String title, String errMsg,Integer successCount, Integer failedCount, String text) {
|
String subject = title+'执行成功 结束时间:' + Datetime.now().format();
|
text += '\n*******处理结果*******\n'
|
+ '总件数: ' + String.valueOf(successCount)+'\n'
|
+ '成功存档件数 : ' + String.valueOf(successCount-failedCount)+'\n'
|
+ '无数据未存档件数 : ' + String.valueOf(failedCount)+'\n'
|
+ '*********未存档信息*********\n'
|
+ errMsg + '\n'
|
+ '*********结束*********\n';
|
Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
|
message.setReplyTo(UserInfo.getUserEmail());
|
message.setCharset('UTF-8');
|
// 差出人は通知用メールアドレス
|
//message.setSenderDisplayName(System.Label.mms_info_mailaddress);
|
//OrgWideEmailAddress owa = CommonUtil.getOrgWideEmailAddress(System.Label.mms_info_mailaddress);
|
//message.setOrgWideEmailAddressId(owa.Id);
|
// 送信人
|
if (toStr == null || toStr.size() == 0) {
|
message.setToAddresses(new String[] {UserInfo.getUserEmail()});
|
} else {
|
message.setToAddresses(toStr);
|
}
|
// CC
|
if (ccStr != null && ccStr.size() != 0) {
|
message.setCcAddresses(ccStr);
|
}
|
// 件名
|
message.setSubject(subject);
|
// 本文
|
message.setPlainTextBody(text);
|
message.setUseSignature(false);
|
addMessage(message);
|
}
|
public void failedMail(String title, String errMsg
|
, Integer totalCount, Integer doneCount, Integer failedCount) {
|
failedMail(null, null, title, errMsg, totalCount, doneCount, failedCount, '');
|
}
|
public void failedMail(String[] toStr, String[] ccStr, String title, String errMsg
|
, Integer totalCount, Integer doneCount, Integer failedCount) {
|
failedMail(toStr, ccStr, title, errMsg, totalCount, doneCount, failedCount, '');
|
}
|
public void failedMail(String[] toStr, String[] ccStr, String title, String errMsg
|
, Integer totalCount, Integer doneCount, Integer failedCount, STring text) {
|
String subject = title+'执行失败 结束时间:' + Datetime.now().format();
|
text +=
|
'*******处理结果*******\n\n'
|
+ '总件数 : ' + totalCount+'\n'
|
+ '失败件数 : ' + failedCount +'\n'
|
+ '处理完毕件数 : ' + doneCount+'\n'+
|
+ '*******错误信息*******\n' +
|
+ errMsg + '\n'
|
+ '*********结束*********\n';
|
Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
|
message.setReplyTo(UserInfo.getUserEmail());
|
message.setCharset('UTF-8');
|
// 送信人
|
if (toStr == null || toStr.size() == 0) {
|
message.setToAddresses(new String[] {UserInfo.getUserEmail()});
|
} else {
|
message.setToAddresses(toStr);
|
}
|
// CC
|
Set<String> ccEmailSet = new Set<String>();
|
for (ApexEmailNotification tmpEmailObj : [SELECT Email, UserId, User.Email
|
FROM ApexEmailNotification]) {
|
if (String.isBlank(tmpEmailObj.UserId)) {
|
for (String emailAddress : tmpEmailObj.Email.split(',')) {
|
ccEmailSet.add(emailAddress.trim());
|
}
|
} else {
|
ccEmailSet.add(tmpEmailObj.user.Email);
|
}
|
}
|
if (ccStr != null && ccStr.size() > 0) {
|
for (String emailAddress : ccStr) {
|
ccEmailSet.add(emailAddress);
|
}
|
}
|
message.setCcAddresses(new List<String>(ccEmailSet));
|
// 件名
|
message.setSubject(subject);
|
// 本文
|
message.setPlainTextBody(text);
|
message.setUseSignature(false);
|
addMessage(message);
|
}
|
//20210830 you 邮件 CSV存档邮件推送
|
public void failedMail(String[] toStr, String[] ccStr, String title, String errMsg
|
, Integer totalCount, Integer doneCount,Integer nullCount, Integer failedCount, STring text) {
|
String subject = title+'执行失败 结束时间:' + Datetime.now().format();
|
text +=
|
'*******处理结果*******\n\n'
|
+ '总件数 : ' + totalCount+'\n'
|
+ '成功存档件数 : ' + doneCount+'\n'
|
+ '无数据未存档件数 : ' + nullCount+'\n'
|
+ '失败件数 : ' + failedCount +'\n'+
|
+ '*******错误信息*******\n' +
|
+ errMsg + '\n'
|
+ '*********结束*********\n';
|
Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
|
message.setReplyTo(UserInfo.getUserEmail());
|
message.setCharset('UTF-8');
|
// 送信人
|
if (toStr == null || toStr.size() == 0) {
|
message.setToAddresses(new String[] {UserInfo.getUserEmail()});
|
} else {
|
message.setToAddresses(toStr);
|
}
|
// CC
|
Set<String> ccEmailSet = new Set<String>();
|
for (ApexEmailNotification tmpEmailObj : [SELECT Email, UserId, User.Email
|
FROM ApexEmailNotification]) {
|
if (String.isBlank(tmpEmailObj.UserId)) {
|
for (String emailAddress : tmpEmailObj.Email.split(',')) {
|
ccEmailSet.add(emailAddress.trim());
|
}
|
} else {
|
ccEmailSet.add(tmpEmailObj.user.Email);
|
}
|
}
|
if (ccStr != null && ccStr.size() > 0) {
|
for (String emailAddress : ccStr) {
|
ccEmailSet.add(emailAddress);
|
}
|
}
|
message.setCcAddresses(new List<String>(ccEmailSet));
|
// 件名
|
message.setSubject(subject);
|
// 本文
|
message.setPlainTextBody(text);
|
message.setUseSignature(false);
|
addMessage(message);
|
}
|
|
//20230203 lt 计划的作业优化 一小时两次 start
|
public Class ScBean {
|
public String scName;
|
public String scTime;
|
}
|
|
public static ScBean setSc1(String baseName, Integer minhour, Integer maxhour, Integer minMin, String spbefore, String spafter) {
|
Datetime dt = Datetime.now();
|
Integer year = Integer.valueOf(dt.format('yyyy'));//2021-12-29 you YYYY--->yyyy 是因为最后一周跨年了
|
Integer month = Integer.valueOf(dt.format('MM'));
|
Integer day = Integer.valueOf(dt.format('dd'));
|
Integer hour = Integer.valueOf(dt.format('HH'));
|
Integer min = Integer.valueOf(dt.format('mm'));
|
ScBean b = new ScBean();
|
if (hour == maxhour && min >= (minMin + 30)) {
|
b.scName = baseName + '001';
|
if (spafter != null && String.isNotBlank(spafter)) {
|
b.scName = baseName + '005';
|
b.scTime = spafter + ' ' + day + ' ' + month + ' ? ' + year;
|
// system.schedule(sJobame,spafter + ' ' + day + ' ' + month + ' ? ' + year, new AgencyShareUpdateBatchSchedule());
|
return b;
|
}
|
else {
|
dt = Datetime.now().addDays(1);
|
year = Integer.valueOf(dt.format('yyyy'));//2021-12-29 you YYYY--->yyyy 是因为最后一周跨年了
|
month = Integer.valueOf(dt.format('MM'));
|
day = Integer.valueOf(dt.format('dd'));
|
hour = Integer.valueOf(dt.format('HH'));
|
min = Integer.valueOf(dt.format('mm'));
|
if (spbefore != null && String.isNotBlank(spbefore)) {
|
b.scName = baseName + '006';
|
b.scTime = spbefore + ' ' + day + ' ' + month + ' ? ' + year;
|
}
|
else {
|
b.scTime = '0 ' + minMin + ' ' + minhour + ' ' + day + ' ' + month + ' ? ' + year;
|
}
|
}
|
}
|
else if (min < minMin) {
|
b.scName = baseName + '001';
|
b.scTime = '0 ' + minMin + ' ' + hour + ' ' + day + ' ' + month + ' ? ' + year;
|
}
|
else if (min < minMin + 30) {
|
b.scName = baseName + '002';
|
b.scTime = '0 ' + (minMin + 30) + ' ' + hour + ' ' + day + ' ' + month + ' ? ' + year;
|
}
|
else {
|
b.scName = baseName + '001';
|
b.scTime = '0 ' + minMin + ' ' + (hour + 1) +' ' + day + ' ' + month + ' ? ' + year;
|
}
|
return b;
|
}
|
|
public static void removeOtherSc(String likeName, String needName) {
|
String likeStr = likeName + '00%';
|
for(CronTrigger ct : [SELECT Id,CronJobDetailId,CronExpression,CronJobDetail.Name
|
FROM CronTrigger
|
WHERE CronJobDetail.Name Like :likeStr
|
AND CronJobDetail.Name != :needName]){
|
System.abortJob(ct.Id);
|
}
|
}
|
//20230203 lt 计划的作业优化 一小时两次 end
|
}
|