代码提交

This commit is contained in:
liang.chao 2025-09-18 15:35:45 +08:00
parent 6507a7d11f
commit 7ad60c3b16
4 changed files with 24 additions and 20 deletions

View File

@ -60,9 +60,9 @@ public class ArchivedSettingController extends BaseController {
@PostMapping("edit")
@SysLog(title = "修改归档配置", module = "数据/档案移交->归档配置", businessType = OperaType.UPDATE, details = "修改归档配置", logType = 1)
@RequiresPermissions("archived:setting:edit")
public AjaxResult updateArchivedSetting(ArchivedSettingDto dto) {
public AjaxResult updateArchivedSetting(List<ArchivedSettingDto> dto) {
try {
return service.updateArchivedSetting(dto);
return AjaxResult.success(service.updateArchivedSetting(dto));
} catch (Exception e) {
log.error(e.toString(), e);
return AjaxResult.error("请求出错了");

View File

@ -13,8 +13,8 @@ import java.util.stream.Collectors;
public class CronExpressionGenerator {
private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");
private static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm");
private static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
public static String generateCron(String archivedType, String cycle, String time, String weekOfDay, String monthDay) {
if (archivedType == null || time == null || time.trim().isEmpty()) {
@ -24,7 +24,9 @@ public class CronExpressionGenerator {
try {
if ("2".equals(archivedType)) {
// ---- 不定期归档一次性执行 ----
LocalDateTime dateTime = LocalDateTime.parse(time.trim(), DATETIME_FORMATTER);
LocalDateTime parsed = LocalDateTime.parse(time.trim(), DATETIME_FORMATTER);
// 再设置秒为 0即使输入带秒也统一归零
LocalDateTime dateTime = parsed.withSecond(0).withNano(0);
return String.format("%d %d %d %d %d ? %d",
dateTime.getSecond(),
dateTime.getMinute(),
@ -37,7 +39,9 @@ public class CronExpressionGenerator {
// ---- 定期归档周期性执行 ----
if (cycle == null) return null;
LocalTime localTime = LocalTime.parse(time.trim(), TIME_FORMATTER);
LocalTime parsed = LocalTime.parse(time.trim(), TIME_FORMATTER);
// 再设置秒为 0即使输入带秒也统一归零
LocalTime localTime = parsed.withSecond(0).withNano(0);
int second = localTime.getSecond();
int minute = localTime.getMinute();
int hour = localTime.getHour();
@ -115,18 +119,18 @@ public class CronExpressionGenerator {
public static void main(String[] args) {
// 定期归档精确到秒
System.out.println("【定期归档】");
System.out.println(generateCron("1", "1", "02:30:15", null, null));
System.out.println(generateCron("1", "daily", "02:30", null, null));
// 输出15 30 2 * * ?
System.out.println(generateCron("1", "2", "03:45:30", "1,5", null));
System.out.println(generateCron("1", "weekly", "03:45", "1,5", null));
// 输出30 45 3 ? * MON,FRI
System.out.println(generateCron("1", "3", "01:15:00", null, "1,15"));
System.out.println(generateCron("1", "monthly", "01:15", null, "1,15"));
// 输出0 15 1 1,15 * ?
// 不定期归档
System.out.println("【不定期归档】");
System.out.println(generateCron("2", null, "2025-09-15 10:30:45", null, null));
System.out.println(generateCron("2", null, "2025-09-15 10:30", null, null));
// 输出45 30 10 15 9 ? 2025
}
}

View File

@ -14,5 +14,5 @@ public interface ArchivedSettingService {
AjaxResult addArchivedSetting(ArchivedSettingDto dto);
AjaxResult updateArchivedSetting(ArchivedSettingDto dto);
Integer updateArchivedSetting(List<ArchivedSettingDto> dto);
}

View File

@ -44,16 +44,16 @@ public class ArchivedSettingServiceImpl implements ArchivedSettingService {
}
@Override
public AjaxResult updateArchivedSetting(ArchivedSettingDto dto) {
String cronStr = CronExpressionGenerator.generateCron(dto.getArchivedType(), dto.getCycle(), dto.getTime(), dto.getWeekOfDay(), dto.getMonthDay());
dto.setCronStr(cronStr);
Integer i = archivedSettingMapper.updateArchivedSetting(dto);
archivedSettingMapper.updatecronExpression(dto);
if (i > 0) {
return AjaxResult.success("修改成功");
} else {
return AjaxResult.error("修改失败");
public Integer updateArchivedSetting(List<ArchivedSettingDto> dtos) {
int num = 0;
for (ArchivedSettingDto dto : dtos) {
String cronStr = CronExpressionGenerator.generateCron(dto.getArchivedType(), dto.getCycle(), dto.getTime(), dto.getWeekOfDay(), dto.getMonthDay());
dto.setCronStr(cronStr);
Integer i = archivedSettingMapper.updateArchivedSetting(dto);
num += i;
archivedSettingMapper.updatecronExpression(dto);
}
return num;
}
}