diff --git a/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml b/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml index c9346ea9..ee6ff61d 100644 --- a/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml +++ b/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml @@ -175,7 +175,7 @@ sms: # 配置源类型用于标定配置来源(interface,yaml) config-type: yaml # 用于标定yml中的配置是否开启短信拦截,接口配置不受此限制 - restricted: true + restricted: false # 短信拦截限制单手机号每分钟最大发送,只对开启了拦截的配置有效 minute-max: 1 # 短信拦截限制单手机号每日最大发送量,只对开启了拦截的配置有效 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/design/DesignFileJob.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/design/DesignFileJob.java index cc017494..7810fe93 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/design/DesignFileJob.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/design/DesignFileJob.java @@ -19,9 +19,7 @@ import org.dromara.system.service.ISysRoleService; import org.dromara.system.service.ISysUserService; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; @Slf4j @Component @@ -59,6 +57,7 @@ public class DesignFileJob { .eq(DesSmsRecord::getAgain, "1") .le(DesSmsRecord::getCreateTime, threeDaysAgo) // Date类型直接比较 ); + HashSet phoneNumbers = new HashSet<>(); for (DesSmsRecord record : records) { DesVolumeFile desVolumeFile = designFileService.getById(record.getVolumeFileId()); DesVolumeCatalog desVolumeCatalog = volumeCatalogService.getById(desVolumeFile.getVolumeCatalogId()); @@ -85,10 +84,13 @@ public class DesignFileJob { List list1 = list.stream().map(DesVolumeFileViewer::getUserId).toList(); //找出没有查看的人 发送短信 List list2 = sysUsers.stream().filter(vo -> !list1.contains(vo.getUserId())).toList(); - asyncUtil.sendSms(list2.stream().map(SysUser::getPhonenumber).toList(), "config5"); + phoneNumbers.addAll(list2.stream().map(SysUser::getPhonenumber).toList()); } - + if(CollectionUtil.isEmpty(phoneNumbers)){ + return; + } + asyncUtil.sendSms(new ArrayList<>(phoneNumbers), "config5"); List list1 = records.stream().map(DesSmsRecord::getId).toList(); desSmsRecordService.lambdaUpdate().in(DesSmsRecord::getId, list1) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/inspection/InspectionJob.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/inspection/InspectionJob.java index cbedf9c1..028ee81b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/inspection/InspectionJob.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/job/inspection/InspectionJob.java @@ -51,32 +51,40 @@ public class InspectionJob { SmsBlend smsBlend = SmsFactory.getSmsBlend("config4"); + List phones = new ArrayList<>(); + List userIds = new ArrayList<>(); // 每500条记录作为一批进行处理 int batchSize = 500; for (int i = 0; i < list.size(); i += batchSize) { int endIndex = Math.min(i + batchSize, list.size()); List batch = list.subList(i, endIndex); - List userIds = new ArrayList<>(); + for (QltQualityInspection qualityInspection : batch) { Long correctorId = qualityInspection.getCorrectorId(); String phonenumber = userService.queryById(correctorId).getPhonenumber(); if (phonenumber == null) { continue; } + if(phones.contains(phonenumber)){ + continue; + } + phones.add(phonenumber); SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, new LinkedHashMap()); if (!smsResponse.isSuccess()) { log.error("验证码短信发送异常 => {}", smsResponse); } - userIds.add(correctorId); - } - if(userIds.isEmpty()){ - continue; + if(!userIds.contains(correctorId)){ + userIds.add(correctorId); + } + } + log.info("质量工单短信提醒批次发送完成,当前批次数量: {}", batch.size()); + } + if(!userIds.isEmpty()){ SseMessageDto sseMessageDto = new SseMessageDto(); sseMessageDto.setMessage("您负责整改的质量工单已逾期,请尽快前往处理!"); sseMessageDto.setUserIds(userIds); SseMessageUtils.publishMessage(sseMessageDto); - log.info("质量工单短信提醒批次发送完成,当前批次数量: {}", batch.size()); } log.info("执行定时任务:质量工单短信提醒完成,总处理数量: {}", list.size()); @@ -93,34 +101,38 @@ public class InspectionJob { SmsBlend smsBlend = SmsFactory.getSmsBlend("config6"); + List phones = new ArrayList<>(); + List userIds = new ArrayList<>(); // 每500条记录作为一批进行处理 int batchSize = 500; for (int i = 0; i < list.size(); i += batchSize) { int endIndex = Math.min(i + batchSize, list.size()); List batch = list.subList(i, endIndex); - List userIds = new ArrayList<>(); for (HseSafetyInspection safetyInspection : batch) { Long correctorId = safetyInspection.getCorrectorId(); String phonenumber = userService.queryById(correctorId).getPhonenumber(); if (phonenumber == null) { continue; } + if(phones.contains(phonenumber)){ + continue; + } + phones.add(phonenumber); SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, new LinkedHashMap()); if (!smsResponse.isSuccess()) { log.error("验证码短信发送异常 => {}", smsResponse); } userIds.add(correctorId); } - + log.info("安全工单短信提醒批次发送完成,当前批次数量: {}", batch.size()); + } + if(!userIds.isEmpty()){ SseMessageDto sseMessageDto = new SseMessageDto(); sseMessageDto.setMessage("您负责整改的安全工单已逾期,请尽快前往处理!"); sseMessageDto.setUserIds(userIds); SseMessageUtils.publishMessage(sseMessageDto); - - log.info("安全工单短信提醒批次发送完成,当前批次数量: {}", batch.size()); } - log.info("执行定时任务:安全工单短信提醒完成,总处理数量: {}", list.size()); } }