src/main/java/com/ruoyi/common/utils/MinioUtils.java
@@ -361,7 +361,7 @@ .build()); // 正确编码文件名:替换 + 为 %20 String encodedFileName = URLEncoder.encode(originalFileName, StandardCharsets.UTF_8) String encodedFileName = URLEncoder.encode(originalFileName, String.valueOf(StandardCharsets.UTF_8)) .replace("+", "%20"); Map<String, String> reqParams = new HashMap<>(); src/main/java/com/ruoyi/inspectiontask/service/impl/InspectionTaskServiceImpl.java
@@ -70,9 +70,9 @@ return new Page<>(entityPage.getCurrent(), entityPage.getSize(), entityPage.getTotal()); } // 获取id集合 List<Long> ids = entityPage.getRecords().stream().map(InspectionTask::getId).toList(); List<Long> ids = entityPage.getRecords().stream().map(InspectionTask::getId).collect(Collectors.toList()); //登记人ids List<Long> registrantIds = entityPage.getRecords().stream().map(InspectionTask::getRegistrantId).toList(); List<Long> registrantIds = entityPage.getRecords().stream().map(InspectionTask::getRegistrantId).collect(Collectors.toList()); // 批量查询登记人 Map<Long, SysUser> sysUserMap; if (!registrantIds.isEmpty()) { @@ -82,7 +82,7 @@ sysUserMap = new HashMap<>(); } //巡检人ids List<String> inspectorIds = entityPage.getRecords().stream().map(InspectionTask::getInspectorId).toList(); List<String> inspectorIds = entityPage.getRecords().stream().map(InspectionTask::getInspectorId).collect(Collectors.toList()); //获取所有不重复的用户ID Set<Long> allUserIds = entityPage.getRecords().stream() src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskScheduler.java
@@ -105,7 +105,6 @@ return triggerBuilder.build(); } private String convertToCronExpression(TimingTask task) { // 参数校验 if (task == null || task.getFrequencyType() == null || task.getFrequencyDetail() == null) { @@ -113,13 +112,19 @@ } // 使用switch确保条件互斥 return switch (task.getFrequencyType().toUpperCase()) { // 统一转为大写比较 case "DAILY" -> convertDailyToCron(task.getFrequencyDetail()); case "WEEKLY" -> convertWeeklyToCron(task.getFrequencyDetail()); case "MONTHLY" -> convertMonthlyToCron(task.getFrequencyDetail()); case "QUARTERLY" -> convertQuarterlyToCron(task.getFrequencyDetail()); default -> throw new IllegalArgumentException("不支持的频率类型: " + task.getFrequencyType()); }; String frequencyType = task.getFrequencyType().toUpperCase(); // 统一转为大写比较 switch (frequencyType) { case "DAILY": return convertDailyToCron(task.getFrequencyDetail()); case "WEEKLY": return convertWeeklyToCron(task.getFrequencyDetail()); case "MONTHLY": return convertMonthlyToCron(task.getFrequencyDetail()); case "QUARTERLY": return convertQuarterlyToCron(task.getFrequencyDetail()); default: throw new IllegalArgumentException("不支持的频率类型: " + task.getFrequencyType()); } } // 每日任务转换 src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
@@ -93,13 +93,13 @@ // 设置巡检人昵称列表 if (StringUtils.isNotBlank(task.getInspectorIds())) { List<String> inspectorNickNames = Arrays.stream(task.getInspectorIds().split(",")) .filter(StringUtils::isNotBlank) .map(idStr -> { List<String> inspectorNickNames = new ArrayList<>(); for (String idStr : task.getInspectorIds().split(",")) { if (StringUtils.isNotBlank(idStr)) { Long id = Long.valueOf(idStr); return userNickNameMap.getOrDefault(id, "未知用户"); }) .toList(); inspectorNickNames.add(userNickNameMap.getOrDefault(id, "未知用户")); } } dto.setInspector(inspectorNickNames); } @@ -145,21 +145,22 @@ private LocalDateTime calculateFirstExecutionTime(TimingTask task) { // 根据频率类型和详情计算首次执行时间 return switch (task.getFrequencyType()) { case "DAILY" -> String frequencyType = task.getFrequencyType(); if ("DAILY".equals(frequencyType)) { // 如果是每天执行,计算今天或明天的具体时间 calculateDailyFirstExecution(task.getFrequencyDetail()); case "WEEKLY" -> return calculateDailyFirstExecution(task.getFrequencyDetail()); } else if ("WEEKLY".equals(frequencyType)) { // 如果是每周执行,计算下周的具体星期几 calculateWeeklyFirstExecution(task.getFrequencyDetail()); case "MONTHLY" -> return calculateWeeklyFirstExecution(task.getFrequencyDetail()); } else if ("MONTHLY".equals(frequencyType)) { // 如果是每月执行,计算下个月的具体日期 calculateMonthlyFirstExecution(task.getFrequencyDetail()); case "QUARTERLY" -> return calculateMonthlyFirstExecution(task.getFrequencyDetail()); } else if ("QUARTERLY".equals(frequencyType)) { // 自定义频率,如每小时、每30分钟等 calculateCustomFirstExecution(task.getFrequencyDetail()); default -> throw new IllegalArgumentException("不支持的频率类型: " + task.getFrequencyType()); }; return calculateCustomFirstExecution(task.getFrequencyDetail()); } else { throw new IllegalArgumentException("不支持的频率类型: " + task.getFrequencyType()); } } private LocalDateTime calculateDailyFirstExecution(String frequencyDetail) { @@ -214,13 +215,18 @@ String frequencyDetail, LocalDateTime currentTime) { try { return switch (frequencyType) { case "DAILY" -> calculateDailyNextTime(frequencyDetail, currentTime); case "WEEKLY" -> calculateWeeklyNextTime(frequencyDetail, currentTime); case "MONTHLY" -> calculateMonthlyNextTime(frequencyDetail, currentTime); case "QUARTERLY" -> calculateQuarterlyNextTime(frequencyDetail, currentTime); default -> throw new IllegalArgumentException("不支持的频率类型: " + frequencyType); }; switch (frequencyType) { case "DAILY": return calculateDailyNextTime(frequencyDetail, currentTime); case "WEEKLY": return calculateWeeklyNextTime(frequencyDetail, currentTime); case "MONTHLY": return calculateMonthlyNextTime(frequencyDetail, currentTime); case "QUARTERLY": return calculateQuarterlyNextTime(frequencyDetail, currentTime); default: throw new IllegalArgumentException("不支持的频率类型: " + frequencyType); } } catch (Exception e) { throw new RuntimeException("计算下次执行时间失败: " + e.getMessage(), e); }