我有一个弹簧启动后端和一个Android应用程序。
我需要根据重复能力创建一个任务,这样如果我选择第一个星期一或第二个星期三直到重复结束日期,那么应该相应地创建任务。
例如:如果我选择第一个星期一,开始日期是今天,即1月31日,重复结束日期是3月23日,应分别为2月和3月的第一个星期一创建两个任务。
关于我如何实现这一点的任何想法以及来自android应用程序请求的参数是什么。
以下是我创建任务的代码。
public void saveTask(Task task) {
RepeatInterval repeatInterval = repeatIntervalRepository.findOne(task.getRepeatInterval().getId());
task.setDateCreated(new Date());
Date iterationDueDate = task.getRepetitionEndDate();
Date endDate = task.getEndDate();
if (repeatInterval.getRepeatInterval().equals("none")) {
task.setDateCreated(new Date());
taskRepository.save(task);
}
else {
while (iterationDueDate.before(endDate)) {
Task newTask = new Task();
newTask.setPriority(task.getPriority());
newTask.setTaskState(task.getTaskState());
newTask.setDescription(task.getDescription());
newTask.setSystemUser(task.getSystemUser());
newTask.setName(task.getName());
newTask.setEndDate(task.getEndDate());
newTask.setChecklist(task.getChecklist());
newTask.setRepetitionEndDate(task.getRepetitionEndDate());
newTask.setDateCreated(new Date());
newTask.setProject(task.getProject());
newTask.setRepeatInterval(task.getRepeatInterval());
taskRepository.save(newTask);
newTask.setRepetitionEndDate(updateDueDate(iterationDueDate, repeatInterval.getRepeatInterval()));
iterationDueDate = newTask.getRepetitionEndDate();
}
}
}
private Date updateDueDate(Date previousDate, String repeatInterval) {
Date newDate = null;
Calendar cal = Calendar.getInstance();
cal.setTime(previousDate);
if (repeatInterval.equalsIgnoreCase("hourly")) {
cal.add(Calendar.HOUR, 1);
} else if (repeatInterval.equalsIgnoreCase("daily")) {
cal.add(Calendar.DAY_OF_MONTH, 1);
} else if (repeatInterval.equalsIgnoreCase("weekly")) {
cal.add(Calendar.DAY_OF_MONTH, 7);
} else if (repeatInterval.equalsIgnoreCase("monthly")) {
cal.add(Calendar.MONTH, 1);
} else if (repeatInterval.equalsIgnoreCase("yearly")) {
cal.add(Calendar.YEAR, 1);
}
return cal.getTime();
}
任何帮助将不胜感激。