|
|
@ -20,6 +20,7 @@ import javax.annotation.Resource; |
|
|
import java.time.DayOfWeek; |
|
|
import java.time.DayOfWeek; |
|
|
import java.time.LocalDate; |
|
|
import java.time.LocalDate; |
|
|
import java.time.LocalDateTime; |
|
|
import java.time.LocalDateTime; |
|
|
|
|
|
import java.time.temporal.ChronoUnit; |
|
|
import java.time.temporal.TemporalAdjusters; |
|
|
import java.time.temporal.TemporalAdjusters; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
import java.util.Objects; |
|
|
import java.util.Objects; |
|
|
@ -41,12 +42,22 @@ public class TaskTemplateQueryServiceImpl implements TaskTemplateQueryService { |
|
|
*/ |
|
|
*/ |
|
|
@Override |
|
|
@Override |
|
|
public Tuple getTaskDate(TaskTypeEnum taskType, LocalDateTime createTime) { |
|
|
public Tuple getTaskDate(TaskTypeEnum taskType, LocalDateTime createTime) { |
|
|
|
|
|
LocalDate now = LocalDate.now(); |
|
|
LocalDate taskStartDate = null; |
|
|
LocalDate taskStartDate = null; |
|
|
LocalDate taskEndDate = null; |
|
|
LocalDate taskEndDate = null; |
|
|
|
|
|
TaskStageEnum stageCode = null; |
|
|
switch (taskType) { |
|
|
switch (taskType) { |
|
|
case DAILY_TASK: |
|
|
case DAILY_TASK: |
|
|
taskStartDate = LocalDate.now(); |
|
|
|
|
|
taskEndDate = LocalDate.now(); |
|
|
|
|
|
|
|
|
taskStartDate = now; |
|
|
|
|
|
taskEndDate = now; |
|
|
|
|
|
int diffDays = (int) ChronoUnit.DAYS.between(createTime.toLocalDate(), now) + 1; |
|
|
|
|
|
if (diffDays <= 30) { |
|
|
|
|
|
stageCode = TaskStageEnum.FIRST_MONTH; |
|
|
|
|
|
} else if (diffDays <= 60) { |
|
|
|
|
|
stageCode = TaskStageEnum.SECOND_MONTH; |
|
|
|
|
|
} else { |
|
|
|
|
|
stageCode = TaskStageEnum.THIRD_MONTH_AND_AFTER; |
|
|
|
|
|
} |
|
|
break; |
|
|
break; |
|
|
case WEEKLY_TASK: |
|
|
case WEEKLY_TASK: |
|
|
//暂时只有首周 |
|
|
//暂时只有首周 |
|
|
@ -54,29 +65,36 @@ public class TaskTemplateQueryServiceImpl implements TaskTemplateQueryService { |
|
|
//taskEndDate = LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); |
|
|
//taskEndDate = LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); |
|
|
taskStartDate = createTime.toLocalDate(); |
|
|
taskStartDate = createTime.toLocalDate(); |
|
|
taskEndDate = taskStartDate.plusDays(7); |
|
|
taskEndDate = taskStartDate.plusDays(7); |
|
|
if (taskEndDate.isBefore(LocalDate.now())) { |
|
|
|
|
|
|
|
|
if (taskEndDate.isBefore(now)) { |
|
|
taskStartDate = null; |
|
|
taskStartDate = null; |
|
|
taskEndDate = null; |
|
|
taskEndDate = null; |
|
|
} |
|
|
} |
|
|
|
|
|
stageCode = TaskStageEnum.FIRST_MONTH; |
|
|
break; |
|
|
break; |
|
|
case MONTHLY_TASK: |
|
|
case MONTHLY_TASK: |
|
|
LocalDate now = LocalDate.now(); |
|
|
|
|
|
taskStartDate = createTime.toLocalDate(); |
|
|
taskStartDate = createTime.toLocalDate(); |
|
|
taskEndDate = taskStartDate.plusDays(30); |
|
|
taskEndDate = taskStartDate.plusDays(30); |
|
|
|
|
|
stageCode = TaskStageEnum.FIRST_MONTH; |
|
|
if (taskEndDate.isBefore(now)) { |
|
|
if (taskEndDate.isBefore(now)) { |
|
|
taskStartDate = taskEndDate.plusDays(1); |
|
|
|
|
|
if (taskStartDate.getYear() == now.getYear() && taskStartDate.getMonth() == now.getMonth() && taskEndDate.getDayOfMonth() != 1) { |
|
|
|
|
|
|
|
|
//判断是否跨月 |
|
|
|
|
|
LocalDate firstMonthTaskEndDate = taskEndDate; |
|
|
|
|
|
taskStartDate = now.withDayOfMonth(1); |
|
|
|
|
|
int lastDay = now.lengthOfMonth(); |
|
|
|
|
|
taskEndDate = now.withDayOfMonth(lastDay); |
|
|
|
|
|
if (firstMonthTaskEndDate.getYear() == now.getYear() && firstMonthTaskEndDate.getMonth() == now.getMonth()) { |
|
|
taskStartDate = null; |
|
|
taskStartDate = null; |
|
|
taskEndDate = null; |
|
|
taskEndDate = null; |
|
|
} else { |
|
|
} else { |
|
|
taskStartDate = now.withDayOfMonth(1); |
|
|
|
|
|
int lastDay = now.lengthOfMonth(); |
|
|
|
|
|
taskEndDate = now.withDayOfMonth(lastDay); |
|
|
|
|
|
|
|
|
if ((int) ChronoUnit.DAYS.between(firstMonthTaskEndDate, taskStartDate) <= 31) { |
|
|
|
|
|
stageCode = TaskStageEnum.SECOND_MONTH; |
|
|
|
|
|
} else { |
|
|
|
|
|
stageCode = TaskStageEnum.THIRD_MONTH_AND_AFTER; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
return new Tuple(taskStartDate, taskEndDate); |
|
|
|
|
|
|
|
|
return new Tuple(taskStartDate, taskEndDate, stageCode); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
|