diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/warning/ScheduledCheckWarning.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/warning/ScheduledCheckWarning.java index 640bb4cf..e0c4edd7 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/warning/ScheduledCheckWarning.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/warning/ScheduledCheckWarning.java @@ -24,7 +24,9 @@ import javax.annotation.Resource; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import static com.bonus.common.biz.constant.MaterialConstants.SEND_FAILURE; import static com.bonus.common.biz.constant.MaterialConstants.SEND_SUCCESS; @@ -129,7 +131,23 @@ public class ScheduledCheckWarning { } System.out.println("短信发送成功: " + mobileList); if (CollectionUtils.isNotEmpty(mobileList)){ - JSONObject sendResult = SmsTool.sendSms(mobileList, BmConfigItems.ANHUI_COMPANY_SMS_KEY); + // 根据手机号及内容对sendResults进行去重处理 + List uniqueResults = new ArrayList<>(); + // 存储已出现的「手机号+内容」key + Set uniqueKeySet = new HashSet<>(); + for (SmsParam sr : mobileList) { + // 跳过空值(根据业务补充校验) + if (sr == null || sr.getMobile() == null || sr.getContent() == null) { + continue; + } + String key = sr.getMobile() + "|" + sr.getContent(); + // 若key未出现过,加入结果列表并记录key + if (!uniqueKeySet.contains(key)) { + uniqueKeySet.add(key); + uniqueResults.add(sr); + } + } + JSONObject sendResult = SmsTool.sendSms(uniqueResults, BmConfigItems.ANHUI_COMPANY_SMS_KEY); if (sendResult != null && !sendResult.isEmpty()) { log.info("短信发送成功: {}", sendResult); System.out.println("短信发送成功: " + sendResult); @@ -139,10 +157,26 @@ public class ScheduledCheckWarning { } // 根据sendResult赋值短信发送成功与否状态 String status = (sendResult != null && !sendResult.isEmpty()) ? SEND_SUCCESS : SEND_FAILURE; - sendResults.forEach(item -> item.setSendStatus(status)); + // 根据手机号及内容对sendResults进行去重处理 + List results = new ArrayList<>(); + // 存储已出现的「手机号+内容」key + Set keySet = new HashSet<>(); + for (SmsSendResult sr : sendResults) { + // 跳过空值(根据业务补充校验) + if (sr == null || sr.getReceiverPhone() == null || sr.getContent() == null) { + continue; + } + String key = sr.getReceiverPhone() + "|" + sr.getContent(); + // 若key未出现过,加入结果列表并记录key + if (!keySet.contains(key)) { + keySet.add(key); + results.add(sr); + } + } + results.forEach(item -> item.setSendStatus(status)); //将集合结果插入数据库中 - mapper.insertSmsSendResult(sendResults); + mapper.insertSmsSendResult(results); } @@ -172,6 +206,14 @@ public class ScheduledCheckWarning { sendResults.add(new SmsSendResult("工器具临近检验有效期15天短信通知", item.getUserId(), item.getClzPhone(), content2, DateUtils.getNowDate())); } + // 获取段君强手机号 + useMaintenanceWarningBean.setUserName("duanjq4515"); + UseMaintenanceWarningBean info = mapper.getUserPhoneById(useMaintenanceWarningBean); + if(info.getClzPhone() != null){ + mobileList2.add(new SmsParam(info.getClzPhone(), content2)); + sendResults.add(new SmsSendResult("工器具临近检验有效期15天短信通知", info.getUserId(), info.getClzPhone(), + content2, DateUtils.getNowDate())); + } } // 送二 if (bean2.getDeptId() != null && bean2.getDeptId() == 102L) { @@ -187,7 +229,23 @@ public class ScheduledCheckWarning { } System.out.println("短信发送成功: " + mobileList2); if (CollectionUtils.isNotEmpty(mobileList2)){ - JSONObject sendResult = SmsTool.sendSms(mobileList2, BmConfigItems.ANHUI_COMPANY_SMS_KEY); + // 根据手机号及内容对sendResults进行去重处理 + List uniqueResults = new ArrayList<>(); + // 存储已出现的「手机号+内容」key + Set uniqueKeySet = new HashSet<>(); + for (SmsParam sr : mobileList2) { + // 跳过空值(根据业务补充校验) + if (sr == null || sr.getMobile() == null || sr.getContent() == null) { + continue; + } + String key = sr.getMobile() + "|" + sr.getContent(); + // 若key未出现过,加入结果列表并记录key + if (!uniqueKeySet.contains(key)) { + uniqueKeySet.add(key); + uniqueResults.add(sr); + } + } + JSONObject sendResult = SmsTool.sendSms(uniqueResults, BmConfigItems.ANHUI_COMPANY_SMS_KEY); if (sendResult != null && !sendResult.isEmpty()) { log.info("短信发送成功: {}", sendResult); System.out.println("短信发送成功: " + sendResult); @@ -197,10 +255,26 @@ public class ScheduledCheckWarning { } // 根据sendResult赋值短信发送成功与否状态 String status = (sendResult != null && !sendResult.isEmpty()) ? SEND_SUCCESS : SEND_FAILURE; - sendResults.forEach(item -> item.setSendStatus(status)); + // 根据手机号及内容对sendResults进行去重处理 + List results = new ArrayList<>(); + // 存储已出现的「手机号+内容」key + Set keySet = new HashSet<>(); + for (SmsSendResult sr : sendResults) { + // 跳过空值(根据业务补充校验) + if (sr == null || sr.getReceiverPhone() == null || sr.getContent() == null) { + continue; + } + String key = sr.getReceiverPhone() + "|" + sr.getContent(); + // 若key未出现过,加入结果列表并记录key + if (!keySet.contains(key)) { + keySet.add(key); + results.add(sr); + } + } + results.forEach(item -> item.setSendStatus(status)); //将集合结果插入数据库中 - mapper.insertSmsSendResult(sendResults); + mapper.insertSmsSendResult(results); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/warning/WashHouseScheduledTasks.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/warning/WashHouseScheduledTasks.java index 4fc9b9ff..dc0348d1 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/warning/WashHouseScheduledTasks.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/warning/WashHouseScheduledTasks.java @@ -22,7 +22,9 @@ import javax.annotation.Resource; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; import static com.bonus.common.biz.constant.MaterialConstants.SEND_FAILURE; @@ -289,10 +291,26 @@ public class WashHouseScheduledTasks { } // 根据sendResult赋值短信发送成功与否状态 String status = (sendResult != null && !sendResult.isEmpty()) ? SEND_SUCCESS : SEND_FAILURE; - sendResults.forEach(item -> item.setSendStatus(status)); + // 根据手机号及内容对sendResults进行去重处理 + List uniqueResults = new ArrayList<>(); + // 存储已出现的「手机号+内容」key + Set uniqueKeySet = new HashSet<>(); + for (SmsSendResult sr : sendResults) { + // 跳过空值(根据业务补充校验) + if (sr == null || sr.getReceiverPhone() == null || sr.getContent() == null) { + continue; + } + String key = sr.getReceiverPhone() + "|" + sr.getContent(); + // 若key未出现过,加入结果列表并记录key + if (!uniqueKeySet.contains(key)) { + uniqueKeySet.add(key); + uniqueResults.add(sr); + } + } + uniqueResults.forEach(item -> item.setSendStatus(status)); //将集合结果插入数据库中 - mapper.insertSmsSendResult(sendResults); + mapper.insertSmsSendResult(uniqueResults); } else { log.info("没有待入库的单子"); System.out.println("没有待入库的单子");