Commit 9c0b5ddd by jianan

保费到期提醒18

parent 0a199995
...@@ -3,8 +3,7 @@ package com.yd.csf.api.service; ...@@ -3,8 +3,7 @@ package com.yd.csf.api.service;
import java.util.List; import java.util.List;
/** /**
* 续期提醒邮件发送。 * 续期提醒邮件发送(JavaMail 直连 SMTP,见 RenewalMailServiceImpl)。
* 一期为占位实现,后续替换为公司统一邮件服务(yd-email-api)。
*/ */
public interface RenewalMailService { public interface RenewalMailService {
......
...@@ -10,7 +10,6 @@ import com.yd.csf.service.enums.RenewalRemindStatusEnum; ...@@ -10,7 +10,6 @@ import com.yd.csf.service.enums.RenewalRemindStatusEnum;
import com.yd.csf.service.model.RenewalRemindBatch; import com.yd.csf.service.model.RenewalRemindBatch;
import com.yd.csf.service.service.IRenewalRemindBatchService; import com.yd.csf.service.service.IRenewalRemindBatchService;
import com.yd.csf.service.service.RenewalReminderQueryService; import com.yd.csf.service.service.RenewalReminderQueryService;
import com.yd.framework.config.LockExecutor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -33,7 +32,6 @@ import java.util.stream.Collectors; ...@@ -33,7 +32,6 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class RenewalDispatchServiceImpl implements RenewalDispatchService { public class RenewalDispatchServiceImpl implements RenewalDispatchService {
private static final String LOCK_KEY_PREFIX = "renewal:remind:";
private static final String BATCH_BIZ_ID_PREFIX = "RR"; private static final String BATCH_BIZ_ID_PREFIX = "RR";
private static final int ERROR_MSG_MAX_LEN = 1900; private static final int ERROR_MSG_MAX_LEN = 1900;
...@@ -41,8 +39,6 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService { ...@@ -41,8 +39,6 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
private String recipientsConfig; private String recipientsConfig;
@Resource @Resource
private LockExecutor lockExecutor;
@Resource
private RenewalReminderQueryService renewalReminderQueryService; private RenewalReminderQueryService renewalReminderQueryService;
@Resource @Resource
private RenewalPolicyReportService renewalPolicyReportService; private RenewalPolicyReportService renewalPolicyReportService;
...@@ -55,11 +51,6 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService { ...@@ -55,11 +51,6 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
public void dispatch(String bizMonthParam) { public void dispatch(String bizMonthParam) {
YearMonth execMonth = parseExecMonth(bizMonthParam); YearMonth execMonth = parseExecMonth(bizMonthParam);
String bizMonth = execMonth.toString(); String bizMonth = execMonth.toString();
lockExecutor.executeWithLock(LOCK_KEY_PREFIX + bizMonth, () -> doDispatch(execMonth));
}
private void doDispatch(YearMonth execMonth) {
String bizMonth = execMonth.toString();
RenewalRemindBatch existBatch = renewalRemindBatchService.queryByBizMonth(bizMonth); RenewalRemindBatch existBatch = renewalRemindBatchService.queryByBizMonth(bizMonth);
if (existBatch != null if (existBatch != null
&& RenewalRemindStatusEnum.SUCCESS.getItemValue().equals(existBatch.getStatus())) { && RenewalRemindStatusEnum.SUCCESS.getItemValue().equals(existBatch.getStatus())) {
...@@ -71,8 +62,9 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService { ...@@ -71,8 +62,9 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
String fileName = null; String fileName = null;
String recipientsSnapshot = null; String recipientsSnapshot = null;
try { try {
LocalDate today = LocalDate.now(); // 计算基准日固定为执行月 1 号:定时跑与手动补发同一 bizMonth 结果可复现
data = renewalReminderQueryService.build(execMonth, today); LocalDate baseDate = execMonth.atDay(1);
data = renewalReminderQueryService.build(execMonth, baseDate);
// 窗口内无到期保单:不发邮件,记 EMPTY // 窗口内无到期保单:不发邮件,记 EMPTY
if (CollectionUtils.isEmpty(data.getDuePolicies())) { if (CollectionUtils.isEmpty(data.getDuePolicies())) {
...@@ -84,7 +76,7 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService { ...@@ -84,7 +76,7 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
List<String> recipients = parseRecipients(); List<String> recipients = parseRecipients();
recipientsSnapshot = String.join(",", recipients); recipientsSnapshot = String.join(",", recipients);
fileName = renewalPolicyReportService.buildFileName(data, today); fileName = renewalPolicyReportService.buildFileName(data, LocalDate.now());
byte[] attachment = renewalPolicyReportService.generate(data); byte[] attachment = renewalPolicyReportService.generate(data);
String subject = buildSubject(data); String subject = buildSubject(data);
String content = buildContent(data); String content = buildContent(data);
...@@ -121,7 +113,8 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService { ...@@ -121,7 +113,8 @@ public class RenewalDispatchServiceImpl implements RenewalDispatchService {
batch.setFileName(fileName); batch.setFileName(fileName);
batch.setStatus(status.getItemValue()); batch.setStatus(status.getItemValue());
batch.setErrorMsg(errorMsg); batch.setErrorMsg(errorMsg);
batch.setSendTime(status == RenewalRemindStatusEnum.FAIL ? null : LocalDateTime.now()); // 仅实际发信成功才记录发送时间;EMPTY 未发信、FAIL 发送失败,均置空
batch.setSendTime(status == RenewalRemindStatusEnum.SUCCESS ? LocalDateTime.now() : null);
batch.setUpdateTime(LocalDateTime.now()); batch.setUpdateTime(LocalDateTime.now());
renewalRemindBatchService.saveOrUpdate(batch); renewalRemindBatchService.saveOrUpdate(batch);
} }
......
...@@ -59,9 +59,6 @@ public final class RenewalDueDateCalculator { ...@@ -59,9 +59,6 @@ public final class RenewalDueDateCalculator {
if (years == null) { if (years == null) {
return Result.skip("缴费年期为空或无法解析: " + issueNumber, true); return Result.skip("缴费年期为空或无法解析: " + issueNumber, true);
} }
if (years <= 0) {
return Result.skip("缴费年期非法: " + years, true);
}
LocalDate endDate = effectiveDate.plusYears(years).minusDays(1); LocalDate endDate = effectiveDate.plusYears(years).minusDays(1);
LocalDate candidate = effectiveDate; LocalDate candidate = effectiveDate;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment