From 7c2b68615207bfae95e208d1f0f16eb0612e8394 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期一, 24 八月 2026 22:50:09 +0800
Subject: [PATCH] feat(mes): 计量器具已过期提醒接入系统消息提示(站内信)
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/metering/MesDvMeteringRemindServiceImpl.java | 30 ++++++++++++++++++++++--------
1 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/metering/MesDvMeteringRemindServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/metering/MesDvMeteringRemindServiceImpl.java
index 2c8416c..90a0cb1 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/metering/MesDvMeteringRemindServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/dv/metering/MesDvMeteringRemindServiceImpl.java
@@ -34,9 +34,13 @@
*/
private static final int DEFAULT_REMIND_DAYS = 30;
/**
- * 鍒版湡鎻愰啋绔欏唴淇℃ā鏉跨紪鍙�
+ * 鍗冲皢鍒版湡鎻愰啋绔欏唴淇℃ā鏉跨紪鍙�
*/
private static final String REMIND_TEMPLATE_CODE = "mes_metering_expire_remind";
+ /**
+ * 宸茶繃鏈熸彁閱掔珯鍐呬俊妯℃澘缂栧彿
+ */
+ private static final String OVERDUE_TEMPLATE_CODE = "mes_metering_expire_overdue";
@Resource
private MesDvMeteringMapper meteringMapper;
@@ -57,18 +61,28 @@
}
// 2. 璇诲彇鎻愰啋澶╂暟锛堥粯璁� 30锛�
int remindDays = getRemindDays();
- // 3. 鏌ヨ [today, today + remindDays] 鍒版湡鐨勫櫒鍏�
- List<MesDvMeteringDO> list = meteringMapper.selectListByNextCheckDateBetween(
+ // 3. 鏌ヨ宸茶繃鏈燂紙鍒版湡鏃� < 浠婂ぉ锛変笌鍗冲皢鍒版湡锛堝埌鏈熸棩鍦� [today, today + remindDays]锛夌殑鍣ㄥ叿
+ List<MesDvMeteringDO> overdueList = meteringMapper.selectListByNextCheckDateBefore(today);
+ List<MesDvMeteringDO> dueList = meteringMapper.selectListByNextCheckDateBetween(
today, today.plusDays(remindDays));
- // 4. 閫愬彴鍙戦�佺珯鍐呬俊锛堟寜鍣ㄥ叿 + 鍒版湡鏃ュ幓閲嶏級
- for (MesDvMeteringDO metering : list) {
+ // 4. 閫愬彴鍙戦�佺珯鍐呬俊锛堟寜鍣ㄥ叿 + 鍒版湡鏃ュ幓閲嶏紝涓ょ被鐩镐簰鐙珛锛�
+ for (MesDvMeteringDO metering : overdueList) {
+ if (metering.getChargeUserId() == null || metering.getNextCheckDate() == null) {
+ continue;
+ }
+ if (!meteringRemindRedisDAO.tryMarkOverdueReminded(metering.getId(), metering.getNextCheckDate())) {
+ continue;
+ }
+ sendRemindMessage(metering, OVERDUE_TEMPLATE_CODE);
+ }
+ for (MesDvMeteringDO metering : dueList) {
if (metering.getChargeUserId() == null || metering.getNextCheckDate() == null) {
continue;
}
if (!meteringRemindRedisDAO.tryMarkReminded(metering.getId(), metering.getNextCheckDate())) {
continue;
}
- sendRemindMessage(metering);
+ sendRemindMessage(metering, REMIND_TEMPLATE_CODE);
}
} catch (Exception ex) {
// best-effort锛氭彁閱掑け璐ヤ笉褰卞搷鍒楄〃鏌ヨ
@@ -89,14 +103,14 @@
}
}
- private void sendRemindMessage(MesDvMeteringDO metering) {
+ private void sendRemindMessage(MesDvMeteringDO metering, String templateCode) {
Map<String, Object> params = new HashMap<>();
params.put("meteringCode", metering.getCode());
params.put("meteringName", metering.getName());
params.put("nextCheckDate", metering.getNextCheckDate().toString());
NotifySendSingleToUserReqDTO reqDTO = new NotifySendSingleToUserReqDTO()
.setUserId(metering.getChargeUserId())
- .setTemplateCode(REMIND_TEMPLATE_CODE)
+ .setTemplateCode(templateCode)
.setTemplateParams(params);
notifyMessageSendApi.sendSingleMessageToAdmin(reqDTO);
}
--
Gitblit v1.9.3